自己学习FPGA的一点成果
经过了,将近三个月的学习,自己终于利用FPGA做出里一点像点样的东西--一个基本的DDS这个东西困扰了我好久啊,今天终于弄完了,心情这个High & relax 啊,如释重负!
现在把一些相关的图片传上给大家看看,程序过些天整理好后再发上来!
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493459.jpg
开机后显示画面 (原文件名:002.jpg)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493460.jpg
可以通过按键选择波形 (原文件名:003.jpg)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493461.jpg
正弦波显示画面 (原文件名:004.jpg)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493470.jpg
正弦波,不过还是不是很好 (原文件名:005.jpg)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493471.jpg
三角波 (原文件名:006.jpg)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493473.jpg
液晶和按键(按键只是一个用了) (原文件名:010.jpg)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493474.jpg
FPGA核心板 (原文件名:011.jpg)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493477.jpg
波形输出 (原文件名:012.jpg)
http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493478.jpg
背面 (原文件名:013.jpg)
希望大家都给点建议和意见啊 挺好,继续更新吧 我觊觎楼主的dds源代码。。。楼主能分享一个么,我是初学。 AD9834? 核心板是艾米电子那款吧 呵呵
不知道你的输出频率范围是多少?
看样子应该是DDS的IP 不是使用DDS芯片的吧 都不是,用的nios II 驱动12864
用Verilog 写的波形发生模块。
代码我还没有整理好,需要的话,关注吧。 这部分代码就是实现波形输出的代码。
module wave_out(Key,
clk,
D_out,
);
input clk ;
input Key ;
output D_out ;
wiretemp1,temp2,temp3;
reg clk_d;
reg temp;
reg count ;
reg Addr ;
/*******************/
assign D_out=temp;
/*****************
/************************/
always@(posedge clk)
begin
if(count<25)
count<=count+1;
else begin
count<=0;
clk_d<=~clk_d;
end
end
/*******************/
always@(posedge clk_d)
begin
if(Addr<64)
Addr<=Addr+1;
else
Addr<=0;
end
/********************/
rom_sine rom_sine(
.address(Addr),
.clock(clk_d),
.q(temp1));
rom_tri roms_tri(
.address(Addr),
.clock(clk_d),
.q(temp2));
rom_pulse roms_pulse(
.address(Addr),
.clock(clk_d),
.q(temp3));
/********************/
endmodule 朋友,能否发点这方面的资料给我,我的是邮箱是846003042@qq.com!最近在搞波形发生器,不知如何用液晶把波形显示出来,看到你这个真的很有美感,希望能分享一下,谢谢了^_^ 偷_窥中~~~ mark 哇 lz好强啊我最近的EDA实训也在做波形发生器想问下你写正弦波时怎样设置一个ROM存储那二百多个采样数据?
类似单片机C51程序从数组取里数据的形式 verilog里面没有这种操作,我又不想用200多个case一个个写那些采样值呵呵!
就是你这一段:
rom_sine rom_sine(
.address(Addr),
.clock(clk_d),
.q(temp1));
rom_tri roms_tri(
.address(Addr),
.clock(clk_d),
.q(temp2));
rom_pulse roms_pulse(
.address(Addr),
.clock(clk_d),
.q(temp3)); 不错,呵呵 回复【10楼】mowenhui28
-----------------------------------------------------------------------
这个只要设置rom时设置好rom的大小为200就可以啊。 rom可以写一段matlab代码生成相应的文件
页:
[1]