20.2.3Verilog硬件描述语言实例II - Verilog硬件描述语言实例II-1_第1页
20.2.3Verilog硬件描述语言实例II - Verilog硬件描述语言实例II-1_第2页
20.2.3Verilog硬件描述语言实例II - Verilog硬件描述语言实例II-1_第3页
20.2.3Verilog硬件描述语言实例II - Verilog硬件描述语言实例II-1_第4页
20.2.3Verilog硬件描述语言实例II - Verilog硬件描述语言实例II-1_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

10.6

D触发器//例10.6.1moduled_ff(q,d,clk); outputq;inputd,clk;regq; always@(posedgeclk) q=d; endmodule 1.Verilog语言描述2.

程序说明上升沿和下降沿检测语句功能表

From\to01XZ0noposedgeposedgeposedge1negedgeNonegedgenegedgeXnegedgeposedgenoNoZnegedgeposedgenoNo上升沿触发指变量值从0变为1、0变为x和z、或者从x,z变为1,用posedge表示。下降沿触发指变量值从1变为0、1变为x和z或者从x,z变为0,用negedge表示。3.仿真结果例10.6.1的仿真电路图:

例10.6.1的仿真波形图:

Verilog语言有两种赋值方式:连续赋值assign和过程赋值。过程赋值用来更新寄存器类型变量的值,过程赋值包括阻塞赋值“=”和非阻塞赋值“<=”两种。//例10.6.2moduled_ff(q1,q2,d,clk); outputq1,q2;inputd,clk;regq1,q2; always@(posedgeclk) beginq1=d;q2=q1;endendmodule阻塞赋值:

阻塞赋值“=”:是立即执行。也就是说执行下一条语句时,q1已等于d。在clk时钟的上升沿,q1=d和q2=q1两条语句是先后执行的,最后结果相当于q1n+1=dn,q2n+1=qn+1=dn。非阻塞赋值:

//例10.6.3moduled_ff(q1,q2,d,clk); outputq1,q2;inputd,clk;regq1,q2; always@(posedgeclk) begin q1<=d;q2<=q1;endendmodule 非阻塞过程赋值语句不会阻塞进程,直到整个块的操作执行完才一次完成赋值操作。用于几个寄存器需要同一时刻赋值的情况。q1n+1=dn,q2n+1=q1n=dn-1例10.6.2的仿真波形图:例10.6.3的仿真波形图:

10.7

计数器10.7.14位二进制加法计数器1.Verilog语言描述//例10.7.1modulecount4(out,reset,clk);output[3:0]out;inputreset,clk;reg[3:0]out;always@(posedgeclk)beginif(reset)out<=0;//同步清零elseout<=out+1;//计数endendmodule2.

程序说明这个计数器只有同步复位和计数功能。时钟的上升沿有效,当clk信号的上升沿到来时,如果清零信号为1,则计数器清零,否则计数器进行计数。3.仿真结果例10.7.1的仿真电路图

例10.7.1的仿真波形图:

由仿真电路图可知例10.7.1实现了4位二进制加法计数器的逻辑功能。reset为高电平时,计数器清零。10.7.2同步置数同步清零加法计数器

//例10.7.2modulecount(out,data,load,reset,clk);output[7:0]out;input[7:0]data;inputload,clk,reset;reg[7:0]out;always@(posedgeclk)//clk上升沿触发beginif(!reset)out<=8'h00;//同步清零,低电平有效elseif(!load)out<=data; //同步预置elseout<=out+1; //计数endendmodule1.Verilog语言描述2.程序说明clkresetloadout0x清零10置数(data)11计数计数器功能表

这是一个8位计数器,计数范围为0到255,上升沿到来时计数,具有同步置数和同步清零功能,在时钟的上升沿进行判断。3.仿真结果例10.7.2的仿真波形图:

由图可知,当reset=0时,计数器清零;reset=1、load=0时计数器置数;当reset=1、load=1时,计数器计数。10.7.3

异步清零计数器1.Verilog语言描述//例10.7.3modulecount2(out,reset,clk);output[7:0]out;inputclk,reset;reg[7:0]out;always@(posedgeclkornegedgereset)beginif(!reset)out<=0;elseout<=out+1; //计数endendmodule2.

仿真结果例10.7.3的仿真电路图:

例10.7.3的仿真波形图:

10.7.4扭环型计数器态序Q3Q2

Q1Q0F态序Q3Q2Q1Q0F000001000101110001110010211001201001311101310101411110411010501110501101600110610110700010701010扭环型计数器状态转换表

1.Verilog语言描述//例10.7.4modulejohnson(clk,clr,out);inputclk,clr;output[3:0]out;reg[3:0]out;always@(posedgeclkornegedgeclr)beginif(!clr)out<=4'h0;elsebeginout<=(out>>1);out[3]<=~out[0];endendendmodule2.程序说明程序行1的out<=(out>>1)语句使用了右移运算符来实现右移运算功能,移位运算符包括右移位运算符“>>”和左移位运算符“<<”。其使用方法如下:

a>>n

或a<<n

a代表要进行移位的操作数,n代表要移几位。这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论