电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

大家一起学FPGA实验六VGA接口

大家一起学FPGA实验六VGA接口_第1页
1/33
大家一起学FPGA实验六VGA接口_第2页
2/33
大家一起学FPGA实验六VGA接口_第3页
3/33
小弟不才,才接触FPGA 两个多月,在此记录下自己的学习历程,希望高手们能不吝指点 转帖:Verilog 代码编写规范 第二个实验:1bit 半加法器adder 第三个实验:4 位串行进位加法器 转帖:模块端口 实验四:优先编码器 转帖:Verilog 语言综合问题研究 转帖:FPGA 设计中毛刺问题的研究 谈VHDL/Verilog 的可综合性以及对初学者的一些建议(转) 实验五:计数器 实验六:VGA 接口 第一个实验:流水灯 相信学单片机必做实验都是流水灯吧,可在FPGA 上做流水灯就有点大炮打蚊子的味道了,嘿嘿 我觉得做个流水灯也是挺有必要的,既简单又可以学到不少的东西,比如说如何简单控制电平变化,很多器件只有在一定的时序电平的作用下才能使用,所以要先写个流水灯,呵呵 先上 Verilog HDL 源代码: module led(clk,LED); input clk; //时钟信号输入 output [7:0] LED; reg [7:0] LED; reg [23:0] count; //分频计数器 integer k; wire clk_reg; initial //分频计数器和 LED 寄存器初始化 (initial 并不能综合,这里错了,大家注意下) begin LED <= 8'b00000001; count <= 24'd0; end assign clk_reg=count[23]; always@(posedge clk) //通过 count 对clk 进行分频 count <= count +24'd1; always begin for(k=0;k<8;k=k+1) @(posedge clk_reg) //分频后的时钟信号上升沿到来时 begin LED = LED << 1; //LED 寄存器移位 if(LED == 8'b00000000) LED = 8'b10000000; end for(k=0;k<8;k=k+1) @(posedge clk_reg) begin LED = LED >> 1; if(LED == 8'b00000000) LED = 8'b00000001; end end endmodule 综合,编译后得到的电路图如下: [attachment=2152] 局部视图: [attachment=2154] 说明一下: 1.分频计数器:因为 FPGA 使用的频率高达 48MHz,即使有 PLL 也只能分频至 0.75MHz 左右,这对于流水灯来说频率也是非常高的,故需要使用分频计数器进行分频处理(这里的 clk 没经过 PLL,故使用了 24 位的寄存器作为分频计数器).分频计数器说白了也就一个加法器~ ~ ~ 在这时的作用就相当于延时 2.integer k:在这里使用 integer k 显然不太合里,因为 integer 定义了一个 32 位的寄存器,而这里只用到了0-7,高 29 位的寄存器没用到,造成了不必要的浪费.这里可以定义一个 3 位的寄存器来代替 k 3.k=k+1:Verilog HDL 和 C 语言比较相似,因为有不...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

大家一起学FPGA实验六VGA接口

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部