- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告模板实验五 数字频率计设计
实验四、五 数字频率计设计
【实验目的】
掌握数字频率计的Verilog描述方法;
学习设计仿真工具的使用方法;
学习层次化设计方法;
【实验内容】
用4位十进制计数器对用户输入时钟进行计数,计数间隔为1秒,计数满1秒后将计数值(即频率值)锁存到4位寄存器中显示,并将计数器清0,再进行下一次计数。
为上述设计建立元件符号
编制仿真测试文件,对实验四设计的频率计并进行功能仿真。
下载并验证分频器功能
【实验原理】
?CNTL为控制模块。CNTL的计数使能信号能产生一个1 s宽的周期信号,并对频率计的每一计数器CNT10的en使能端进行同步控制:当EN高电平时允许计数、低电平时停止计数。??? RGB4为锁存器。在信号Load的上升沿时,立即对模块的输入口的数据锁存到RGB4的内部,并由输出端DOUT输出,然后,七段译码器可以译码输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。???CNT10为十进制计数器。有一时钟使能输入端en,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。图1中将6个十进制计数器CNT10级联起来实现6位十进制计数功能
【程序源代码】
module CNTL(CLK,CNL_EN,RST_CNL,LOAD); //计数器控制模块端口说明
reg clk2din,CNL_EN,LOAD; //模块内变量说明
reg RST_CNL;
input CLK;
output CNL_EN,RST_CNL,LOAD; //输出控制信号
always@(posedge CLK)
clk2din=~clk2din;
always@(posedge clk2din)
begin
CNL_EN=clk2din; //生成控制信号
LOAD=~clk2din;
end
always@(CLK)
if(CLK==1b0CNL_EN==1b0)
RST_CNL=1;
else RST_CNL=0;
endmodule //技术控制模块结束说明
module CNT10(clk,RST,EN,COUT,DOUT); //计数器模块端口说明
input clk,RST,EN; //变量定义
output COUT;
output[3:0] DOUT;
reg[3:0]q;
reg COUT;
always@(posedge clk or posedge RST)
begin
if(RST) //RST高电平有效时q置0
q=0;
else if(EN) //EN有效时开始计数
begin if(q9)q=q+1;
else q=0;
end
end
always@(q)if(q==4b1001)COUT=1; //计满输出
else COUT=0;
endmodule //计数器模块结束说明
module RGB4(DIN,LOAD,DOUT); //锁存器模块说明
input LOAD; //锁存器变量说明
input[3:0] DIN;
output [3:0] DOUT;
reg[3:0] DOUT;
always@(posedge LOAD) //LOAD有效时锁存上级输出
DOUT=DIN;
endmodule //锁存器模块结束说明
module LED7(IN,led7); //LED7段数码管模块说明
input[3:0] IN; //数码管变量说明
output[6:0]led7;
reg[6:0]led7;
always@ (IN)
begin
case (IN) //输出数码管对应显示
4b0000:led7=7b0111111;
4b0001:led7=7b0000110;
4b0010:led7=7b1011011;
4b0011:led7=7b1001111;
4b0100:led7=7b1100110;
原创力文档


文档评论(0)