您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验六Verilog设计分频器计数器电路
实验六Verilog设计分频器/计数器电路一、实验目的1进一步掌握最基本时序电路的实现方法;2学习分频器/计数器时序电路程序的编写方法;3进一步学习同步和异步时序电路程序的编写方法。二、实验内容1、用Verilog设计一个10分频的分频器,要求输入为clock(上升沿有效),reset(低电平复位),输出clockout为5个clock周期的低电平,5个clock周期的高电平),文件命名为fenpinqi10.v。2、用Verilog设计一异步清零的十进制加法计数器,要求输入为时钟端CLK(上升沿)和异步清除端CLR(高电平复位),输出为进位端C和4位计数输出端Q,文件命名为couter10.v。3、用Verilog设计8位同步二进制加减法计数器,输入为时钟端CLK(上升沿有效)和异步清除端CLR(低电平有效),加减控制端UPDOWN,当UPDOWN为1时执行加法计数,为0时执行减法计数;输出为进位端C和8位计数输出端Q,文件命名为couter8.v。4、用VERILOG设计一可变模数计数器,设计要求:令输入信号M1和M0控制计数模,当M1M0=00时为模18加法计数器;M1M0=01时为模4加法计数器;当M1M0=10时为模12加法计数器;M1M0=11时为模6加法计数器,输入clk上升沿有效,文件命名为mcout5.v。5、VerilogHDL设计有时钟时能的两位十进制计数器,有时钟使能的两位十进制计数器的元件符号如图所示,CLK是时钟输入端,上升沿有效;ENA是时钟使能控制输入端,高电平有效,当ENA=1时,时钟CLK才能输入;CLR是复位输入端,高电平有效,异步清零;Q[3..0]是计数器低4位状态输出端,Q[7..0]是高4位状态输出端;COUT是进位输出端。三、实验步骤:第一个实验:1、打开QuartusII,新建一个工程f_fenpinq10yjq2、新建一个VerilogHDL文件3、输入程序:modulefenpinqi10(clk,reset,clkout);inputclk,reset;outputclkout;regclkout;reg[2:0]cnt;always@(posedgeclk,negedgereset)beginif(!reset)beginclkout=0;cnt=0;endelseif(cnt==4)begincnt=0;clkout=~clkout;endelsecnt=cnt+1;endendmodule4、设置顶层实体名(点settingsgeneral下拉选fenpinqi10)5、编译6、执行fileCreate/UpdateCreateSymbolFilesforCurrentFlie为VHDI设计文件生成原件符号7、建立波形文件8、导入引脚9、仿真结果如下:总结:仿真结果与实验一的题意相符,所以仿真正确。第二个实验:1、打开QuartusII,新建一个工程couter10yjq2、新建一个VerilogHDL文件输入文件couter10yjq.v3、输入程序modulecouter10(CLK,CLR,C,Q);inputCLK,CLR;outputC;output[3:0]Q;regC=0;reg[3:0]Q=0;always@(posedgeCLK)beginif(CLR==1)beginQ=0;C=0;endelsebeginQ=Q+1;endif(Q==9)beginC=~C;Q=0;endendendmodule4、设置顶层文件(点settingsgeneral下拉选couter10)5、编译6、执行fileCreate/UpdateCreateSymbolFilesforCurrentFlie为VHDI设计文件生成原件符号7、建立波形文件8、导入引脚9、仿真结果如下:总结:仿真结果与题意相符,故仿真正确。第三个实验1、打开QuartusII,新建一个工程couter8yjq2、新建一个VerilogHDL文件输入文件couter8yjq.v3、输入程序modulecouter8(CLK,CLR,UPDOWN,C,Q);inputCLK,CLR,UPDOWN;outputC;output[7:0]Q;regC;reg[7:0]Q;always@(posedgeCLK)beginif(CLR==0)beginC=0;Q=0;endelseif(UPDOWN==1)beginif(Q=='b1111111)beginQ=0;C=~C;endelseQ=Q+1;endelsebeginif(Q=='b0000000)beginQ='b1111111;C=~C;endelseQ=Q-1;endendendmodule4、设置顶层文件(点settingsgeneral下拉选couter8)5、编译6、执行fileCreate/UpdateCreateSymbolFilesforCurrentFlie为VHDI设计文件生成原件符号7、建立波形文件8、导入引脚9、仿真总结:仿真结果与题意相符,故仿真正确。第四个实验1、打开QuartusII,新建一个工程mcout5yjq2、新建一个VerilogHDL文件输入文件mcout5yjq.v3、输入程序modulemcout5(M1,M0,CLK,out,c,CLR);inputM1,M0,CLK,CLR;outputc;output[5:0]out;regc;reg[5:0]M;reg[5:0]N;reg[5:0]out;always@(posedgeCLKorposedgeCLR)beginif(CLR)beginout=0;N=0;endelsebeginN=M;case({M1,M0})'b00:M=18;'b01:M=4;'b10:M=12;'b11:M=6;endcaseif(N==M)beginif(out==M)beginout=0;c=~c;endelsebeginout=out+1;endendelsebeginout=0;c=0;endendendendmodule4、设置顶层文件(点settingsgeneral下拉选mcout5)5、编译6、执行fileCreate/UpdateCreateSymbolFilesforCurrentFlie为VHDI设计文件生成原件符号7、建立波形文件8、导入引脚9、仿真总结:仿真结果与题意相符,故仿真正确。第五个实验1、打开QuartusII,新建一个工程counter2_10yjq2、新建一个VerilogHDL文件输入文件counter2_10yjq.v3、输入程序modulecounter2_10(clk,clr,ena,cout,ql,qh);inputclk,clr,ena;outputcout;output[3:0]ql,qh;reg[3:0]qh,ql;regcout;always@(posedgeclkorposedgeclr)beginif(clr)beginqh=0;ql=0;cout=0;endelseif(ena)beginql=ql+1;if(ql=='b1010)beginql=0;qh=qh+1;if(qh=='b1010)beginqh=0;cout=~cout;endendendendendmodule4、设置顶层文件(点settingsgeneral下拉选counter2_10)5、编译6、执行fileCreate/UpdateCreateSymbolFilesforCurrentFlie为VHDI设计文件生成原件符号7、建立波形文件8、导入引脚9、仿真总结:仿真结果与题意相符,故仿真正确。
本文标题:实验六Verilog设计分频器计数器电路
链接地址:https://www.777doc.com/doc-3228202 .html