《利用Verilog HDL设计学号计数器.docx》由会员分享,可在线阅读,更多相关《利用Verilog HDL设计学号计数器.docx(7页珍藏版)》请在三一办公上搜索。
1、利用Verilog HDL设计学号计数器利用Verilog HDL设计学号计数器 1.设计要求 利用Verilog HDL设计一个以自己学号后三位为模的计数器。 2.设计步骤 第一步:安装Quartus II软件并破解 第二步:根据设计要求编写程序代码 第三步:生成仿真电路图和波形如图 3.设计分析 由于本人的学号后3位为212,所以应编一个以212为模的加法计数器。若采用同步清零的方法,则计数为0211,化为二进制数即为0 0000 0000计到0 1101 0011。 4.程序代码 module count_212(out,data,load,reset,clk); output 8:0
2、out; input 8:0 data; inputload,reset,clk; reg 8:0 out; always (posedgeclk) begin if(!reset)out=9h000; else if (load)out=data; else if (out=211)out=9h000; else out=out+1; end endmodule 程序说明: 该计数器为一个9位计数器,计数范围0211,具有同步同步置数和同步清零功能。时钟的上升沿有效,当clk信号的上升沿到来时,如果清零信号为0,则清零;若不为0,计数器进行计数,计至211处同步清零。 画出仿真电路图: 4.
3、仿真电路图和波形图 同步置数、同步清零加法计数器的仿真电路图如下图: loadout7reg0PREDQout17.9SELDATAADATABOUT09 h000 -out26.18SELDATAADATABOUT0out8reg0PREDQclkENACLRMUX21ENAMUX21CLRout8.0out6reg0PREDQ9 h001 -ENACLRADDERA8.0B8.0Add0+out5reg0PREDQENACLRout4reg0PREDQENACLRout3reg0PREDQ9 h0D3 -CINA8.0B8.0LessThan01LESS_THAN9 h000 -out8.
4、0SELDATAADATABOUT0ENACLRout2reg0PREDQMUX21ENACLRout1reg0PREDQENACLRout0reg0PREDQENACLRresetdata8.0图1 仿真电路图 画出仿真波形 先对逻辑波形进行初始化设置,将清零信号restest置1,置数信号load置0,得到的仿真波形图2所示,波形终止处如图3所示,图4为计数到211后自动清零。 当reset=0,计数器清零;当reset=1,load=0时,计数器计数;当reset=1、load=1时,计数器计数。 由于延时较长,上升沿触发显示不是很明显。 波形图如下图: 图1开始计数的状态波形 图2逻辑
5、波形-波形终止处 图3计数到211然后清零 实验结果 由仿真波形可以看出,计数器从0 0000 0000计到011010011后便清零。而0 1101 0011B=211D,所以该计数器即为一个模为211的计数器,符合实验要求。 实验总结 1. 计数器功能表 Clk Reset Load Out 上升沿 上升沿 上升沿 2.应熟知计数器的使用方法,并能设计出任意进制的计数器,在设计时才能得心应手。计数进制的改变,包括清零法和置数法。假定计数器的计数进制为N,要将其改为M进制的计数器,M N 。当计数器从全零状态开始计数,若采用同步清零法,设计时应经过M-1个状态后清零;若采用异步清零法,设计时应经过M个状态后清零。这样就跳过了M个状态,实现了M进制计数器。因为采用异步清零法会产生清零不可靠的问题,本实验采用的为同步清零法。 3. 本实验采用的是数据流描述方式来描述电路,通过assign连续赋值实现组合逻辑功能,使用简单,语句易于读懂。 4. 调试过程中,应沉着冷静,出现错误时,应该根据数电知识原理来分析,找出错误原因,对症下药;也可上网搜查该错误的含义,可能是软件的使用方法不对。 0 1 1 X 0 1 清零 置数 计数
链接地址:https://www.31ppt.com/p-3329655.html