实验六Verilog设计分频器计数器电路

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六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_fenpinq10yjq

2、新建一个Verilog HDL文件

3、输入程序:

module fenpinqi10(clk,reset,clkout);

input clk,reset;

output clkout;

reg clkout;

reg[2:0] cnt;

always @(posedge clk , negedge reset)

begin

if(!reset)

begin clkout<=0;cnt<=0;end

else if(cnt==4)

begin cnt<=0;clkout<=~clkout;end

else cnt<=cnt+1;

end

endmodule

4、设置顶层实体名(点settings>general >下拉选fenpinqi10)

5、编译

6、执行file>Create/Update>Create Symbol Files for Current Flie为VHDI设计文件生成原件符号

7、建立波形文件

8、导入引脚

9、仿真结果如下:

总结:仿真结果与实验一的题意相符,所以仿真正确。

第二个实验:

1、打开QuartusII,新建一个工程couter10yjq

2、新建一个Verilog HDL文件输入文件couter10yjq.v

3、输入程序

module couter10 (CLK,CLR,C,Q);

input CLK,CLR;

output C;output[3:0] Q;

reg C=0;reg[3:0]Q=0;

always@(posedge CLK )

begin

if (CLR==1)

begin

Q<=0;C<=0;

end

else

begin

Q<=Q+1;

end

if(Q==9)

begin

C<=~C;Q<=0;

end

end

endmodule

4、设置顶层文件(点settings>general >下拉选couter10)

5、编译

6、执行file>Create/Update>Create Symbol Files for Current Flie为VHDI设计文件生成原件符号

7、建立波形文件

8、导入引脚

9、仿真结果如下:

总结:仿真结果与题意相符,故仿真正确。

第三个实验

1、打开QuartusII,新建一个工程couter8yjq

2、新建一个Verilog HDL文件输入文件couter8yjq.v

3、输入程序

module couter8 (CLK,CLR,UPDOWN,C,Q);

input CLK,CLR,UPDOWN;

output C;output[7:0]Q;

reg C;reg[7:0]Q;

always@(posedge CLK)

begin

if (CLR==0)

begin

C<=0;Q<=0;

end

else if (UPDOWN==1)

begin

if (Q=='b1111111)

begin

Q<=0;C<=~C;

end

else Q<=Q+1;

end

else

begin

if (Q=='b0000000)

begin

Q<='b1111111;C<=~C;

end

else Q<=Q-1;

相关文档
最新文档