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

下载本文档

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

文档简介

(2)数的表示方法

按进制划分,整数可以表示成十进制数,十六进制数,八进制和二进制数。Verilog中整数通常有两种表述方式,分别为十进制数和指定位数表述方式。十进制数表述方式:

指定位数表述方式:

用0到9的数字序列表示。

<位长度><‘进制符号><数字及a到f(十六进制)>

在硬件描述语言中,x表示不定值,z表示高阻态。可以在十六进制,八进制和二进制中使用x和z,十六进制中一个x表示4位都是x,八进制中一个x表示3位都是x,二进制中则表示一位是x。z用法同理。整数的表示示例:'h123F

//无位长度的十六进制数'o123 //无位长度的八进制数3'b101 //3位二进制数5'D3 //5位十进制数12'hx //12位不确定数16'oz //16位高阻态16'b1001_0110_1111_zzzz//16位二进制数以下表示是不正确的:123af

//十六进制数,缺少进制符号'

h

在表示长数据时还可以用下划线“_”进行分割以增加程序的可读性,(3)

case语句的语法结构

case

(表达式)

选项值1:语句1; 选项值2:语句2; 选项值3:语句3;

…default:

缺省语句;endcase

缺省语句不是必须有的。

4选1数据选择器的仿真电路图:

4选1数据选择器的仿真波形图:3.

仿真结果10.3.2

4选1数据选择器实例21.if-else语句实现的4选1数据选择器

//例10.3.2modulemux4_1(out,in0,in1,in2,in3,sel);outputout;inputin0,in1,in2,in3;input[1:0]sel;regout;always@(in0orin1orin2orin3orsel)beginif(sel==2'b00)out=in0;elseif(sel==2'b01)out=in1;elseif(sel==2'b10)out=in2;elseif(sel==2'b11)out=in3;elseout=1'bx;endendmodule2.

程序说明(1)if条件语句除了if-else结构外,还有if-else-if结构

if

(表达式1)

语句1;elseif(表达式2)

语句2;elseif…else

语句n;(2)顺序块语句begin-end

顺序块语句通常用来将两条或多条语句组合在一起,使其在格式上更象一条语句。begin

语句1;语句2;

......语句n;end顺序块有以下特点:

1)块内的语句是按顺序执行的,即只有上面一条语句执行完后下面的语句才能执行。2)直到最后一条语句执行完,程序才跳出该语句块。

(3)缺省项问题缺省项是可以省略的,但省略缺省项会引入锁存器,在组合逻辑电路设计中可能会带来一些问题。

//例10.3.3moduleex3reg(y,a,b,c);inputa,b,c;outputy;regy,rega;always@(aorborc)begin

if(a&b)rega=c;else //有缺省项情况

rega=0;y=rega;endendmodulerega被综合为一个数据选择器:

省略了缺省项的Verilog语言程序

//例10.3.4moduleex4reg(y,a,b,c);inputa,b,c;outputy;regy,rega;always@(aorborc)beginif(a&b)rega=c; //缺省项省略

y=rega;endendmoduleif-else结构的缺省项省略了,当a&b为1时,rega被赋予c的值,但当a&b为0时,rega将保持原值,这时需要一个锁存器把rega的值保持下来,因此综合时rega被综合为一个锁存器,锁存器是多余的部分。综合后的电路:对于case语句存在同样的问题,也会由于缺少缺省项,产生了不必要的锁存器。//例10.3.5moduleinccase(a,b,c,d,e);inputa,b,c,d;outpute;rege;always@(aorborcord)

case({a,b})//---------------12’b11:e=d;2’b10:e=~c;endcaseendmodule程序行1的“{}”为拼接操作符,将a和b组成一个二进制数。仿真电路:

由此可见,If条件语句和case条件语句在省略缺省项时,会产生锁存器。因此,在设计组合逻辑电路时缺省项不能省略。10.4四位加法器1.Verilog语言描述4位加法器的功能是实现2个4位二进制数的加法运算。由两个模块组成,分别为底层全加器模块和顶层模块。//例10.4.1//全加器moduleadd_full(A,B,C,Carry,S);inputA,B,C;outputCarry,S;//全加器进位和assignS=A^B^C;assignCarry=(A&B)|(B&C)|(A&C);endmodule实例(Instances)//四位加法器moduleadd_full4(A,B,C,S);input[3:0]A,B;output[3:0]S;//加法器和output[4:0]C;//加法器进位assignC[0]=0;add_fullu1(A[0],B[0],C[0],C[1],S[0]),//------------1u2(A[1],B[1],C[1],C[2],S[1]),

u3(A[2],B[2],C[2],C[3],S[2]),

u4(A[3],B[3],C[3],C[4],S[3]);endmodule实例化(instantiation)2.

程序说明实例(Instances),实例化(instantiation)已经定义好的模块,作为我们电路中的单元。调用这些模块的过程,称为实例化(instantiation),调用完之后,这些电路中的模块单元称为实例(Instance)。实例的使用格式为:

<模块名><实例名><端口列表>;这是管脚按顺序映射调用方式。

Verilog中不允许嵌套定义模块,即一对module和endmodule之间只能定义一个模块。但一个模块内可以通过实例的方式多次调用其他模块。实例的调用格式2:add_fullu1(.A(A[0]),.B(B[0]),.C(C[0]),.Carry(C[1]),.S(S[0])),u2(.A(A[1]),.B(B[1]),.C(C[1]),.Carry(C[2]),.S(S[1])),u3(.A(A[2]),.B(B[2]),.C(C[2]),.Carry(C[3]),.S(S[2])),u4(.A(A[3]),.B(B[3]),.C(C[3]),.Carry(C[4]),.S(S[3]));<模块名><实例名><.实例端口1(模块端口1]),.实例端口2(模块端口2)>;3.

仿真结果仿真电路图

仿真波形图

10.5

七段数码管显示译码器例10.5.1实现的是将BCD码转换成七段数码管的显示码,并假设LED数码管是共阴极。电路有4个输入端,7个输出端。

//例10.5.1moduledecode48(a,b,c,d,e,f,g,D3,D2,D1,D0);outputa,b,c,d,e,f,g;inputD3,D2,D1,D0;//输入4位BCD

码rega,b,c,d,e,f,g;//输出驱动7个笔划段always@(D3orD2orD1orD0)begincase({D3,D2,D1,D0})//用case

语句进行译码1.Verilog语言描述4'd0:{a,b,c,d,e,f,g}=7'b1111110;4'd1:{a,b,c,d,e,f,g}=7'b0110000;4'd2:{a,b,c,d,e,f,g}=7'b1101101;4'd3:{a,b,c,d,e,f,g}=7'b1111001;4'd4:{a,b,c,d,e,f,g}=7'b0110011;4'd5:{a,b,c,d,e,f,g}=7'b1011011;4'd6:{a,b,c,d,e,f,g}=7'b1011111;

温馨提示

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

评论

0/150

提交评论