




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
常用语法之一2023/5/281第一页,共五十三页,编辑于2023年,星期六内容提要3.1模块结构3.2数据类型2023/5/282第二页,共五十三页,编辑于2023年,星期六3.1模块结构Verilog的基本设计单元是“模块”(block)。一个模块是由两部分组成的:一)描述接口;二)描述逻辑功能,即定义输入是如何影响输出的。下面举例说明:2023/5/283第三页,共五十三页,编辑于2023年,星期六3.1模块结构端口定义I/O说明内部信号声明功能定义2023/5/284第四页,共五十三页,编辑于2023年,星期六3.1模块的结构Verilog模块的结构由在module和endmodule
关键词之间的四个主要部分组成:
-端口信息:moduleblock1(a,b,c,d);-输入/输出说明:inputa,b,c;outputd;-内部信号:wirex;-功能定义:assignd=a|x;assignx=(b&~c);endmodule
2023/5/285第五页,共五十三页,编辑于2023年,星期六编写VerilogHDL模块的练习请在下面的空格中填入适当的符号使其成为右图的Verilog模块:
moduleblock1(a,b,—,—,—);input—,—,—;——d,—;assignd=a|(b&~c);assigne=(b&~c);______abcde2023/5/286第六页,共五十三页,编辑于2023年,星期六编写VerilogHDL模块的练习请在下面的空格中填入适当的符号使其成为右图的Verilog模块:
moduleblock1(a,b,c,d,e);inputa,b,c;
outputd,e;assignd=a|(b&~c);assigne=(b&~c);
endmoduleabcde2023/5/287第七页,共五十三页,编辑于2023年,星期六“与或非”门电路moduleAOI(A,B,C,D,F);inputA,B,C,D;outputF;wireA,B,C,D,F; assignF=~((A&B)|(C&D));endmodule2023/5/288第八页,共五十三页,编辑于2023年,星期六3.1.1模块的端口定义模块的端口声明了模块的输入输出端口
module模块名(端口1,端口2,端口3,…);模块的端口表示的是模块的输入输出口名,与别的模块联系端口的标识。模块引用的问题
2023/5/289第九页,共五十三页,编辑于2023年,星期六模块调用(引用)形式模块调用的基本形式为:模块名调用名(端口名表项)
由于描述的是具体的硬件逻辑,每个模块都表示一个具有特定功能的电路块。因此每当它被其它模块调用时,该模块内部被调用的电路块就被复制一次。如果在当前模块中多次调用同一个模块,则需要用不同的调用名。VerilogHDL的模块调用和C语言的函数调用相似,也存在形参和实参的结合问题。2023/5/2810第十页,共五十三页,编辑于2023年,星期六模块调用(引用)方式模块的调用方式可大致分为两种:位置关联调用方式、端口名关联调用方式。【例】模块调用的例子。moduleha(out1,out2,in1,in2);inputin1,in2;outputout1,out2;…...endmodule2023/5/2811第十一页,共五十三页,编辑于2023年,星期六模块调用(引用)方式模块调用采用位置关联调用方式,只需按序列出实例的端口名。模块实例语句如下:
hah1(P,Q,S,C);在本语句中,ha是模块名,h1是实例名称,并且端口按序关联。模块调用采用端口名关联调用方式,则无需按序排列端口名,但实例的端口信号和被调用模块的端口信号必须一一列出。模块实例语句如下:
hah2(.in2(C),.in1(S),.out1(P),.out2(Q),)
由于端口之间的对应关系十分清楚,因此端口名的排列顺序可随意改变。2023/5/2812第十二页,共五十三页,编辑于2023年,星期六模块端口定义声明输入、输出或是双向声明数据类型(wireorreg)default:wire输入和双向不能声明为reg型测试模块不需要端口定义2023/5/2813第十三页,共五十三页,编辑于2023年,星期六3.1.2模块内容I/O说明内部信号声明功能定义2023/5/2814第十四页,共五十三页,编辑于2023年,星期六I/O说明的格式(1)输入口:input[信号位宽-1,0]端口名1;input[信号位宽-1,0]端口名2;……input[信号位宽-1,0]端口名i;输出口output[信号位宽-1,0]端口名1;output[信号位宽-1,0]端口名2;……output[信号位宽-1,0]端口名j;输入输出口inout[信号位宽-1,0]端口名1;inout[信号位宽-1,0]端口名2;……inout[信号位宽-1,0]端口名k;2023/5/2815第十五页,共五十三页,编辑于2023年,星期六I/O说明的格式(2)可以在端口声明语句中同时进行端口类型说明modulemodule_name(inputport1,inputport2,…outputport1,outputport2…);2023/5/2816第十六页,共五十三页,编辑于2023年,星期六内部信号说明对端口信号、节点信号必须进行数据类型的定义默认定义:wire类型
regcout;reg[3:0]out;wireA,B,C,D;2023/5/2817第十七页,共五十三页,编辑于2023年,星期六功能定义在Verilog模块中有三种方法可以生成逻辑电路:-用assign语句:assigncs=(a0&~a1&~a2);-用元件的实例调用:and2and_inst(q,a,b);-用always块:always@(posedgeclkorposedgeclr)begin
if(clr)q<=0;
elseif(en)q<=d;end2023/5/2818第十八页,共五十三页,编辑于2023年,星期六功能定义assign:描述组合逻辑最常用的方法之一always:组合逻辑时序逻辑“<=“一种赋值2023/5/2819第十九页,共五十三页,编辑于2023年,星期六并发和顺序执行并发:Verilog模块中各子模块是并发执行过程块:always、initial元件例化assign顺序:always模块内部各个always块之间是并发关系2023/5/2820第二十页,共五十三页,编辑于2023年,星期六要点小结Verilog模块中所有过程块、连续赋值语句、实例引用都是并行的;表示一种通过变量名互相连接的关系;同一模块中这三者出线的先后顺序没有关系;只有assign和实例引用语句可以独立于过程块出线在模块的功能定义部分。2023/5/2821第二十一页,共五十三页,编辑于2023年,星期六内容提要3.1模块结构3.2数据类型2023/5/2822第二十二页,共五十三页,编辑于2023年,星期六Verilog有三种主要的数据类型:
Nets
表示器件之间的物理连接,称为网络连接类型Register
表示抽象的储存单元,称为寄存器/变量类型Parameter
表示运行时的常数,称为参数类型主要的数据类型2023/5/2823第二十三页,共五十三页,编辑于2023年,星期六0、低、伪、逻辑低、地、VSS、负插入01XZ0bufbufbufbufif11、高、真、逻辑高、电源、VDD、正插入X、不确定:逻辑冲突无法确定其逻辑值HiZ、高阻抗、三态、无驱动源Verilog的四种逻辑值2023/5/2824第二十四页,共五十三页,编辑于2023年,星期六3.2.1常量值不改变的量数字整数二进制整数b或B十进制整数d或D十六进制整数h或H八进制整数o或O8‘b101000118’haa2023/5/2825第二十五页,共五十三页,编辑于2023年,星期六3.2.1常量x和zX:不定值Z:高阻值4’b10x08’h4z2023/5/2826第二十六页,共五十三页,编辑于2023年,星期六3.2.1常量负数-:放在数字定义表达式的最前面-8’d5下画线分割数的表达2023/5/2827第二十七页,共五十三页,编辑于2023年,星期六3.2.1常量参数parameterparameter参数名1=表达式,参数名2=表达式;表达式必须是常数表达式,只能包含数字或参数parameterbyte_size=8,byte_msb=byte_size-1;2023/5/2828第二十八页,共五十三页,编辑于2023年,星期六参数化设计参数化设计是电路设计的重要概念之一;参数化功能块只要在映射过程中赋予不同的参数,就可以得到不同的设计;参数化设计在IP产业中占有重要的位置;参数属性由其代表的参数属性决定2023/5/2829第二十九页,共五十三页,编辑于2023年,星期六参数传递举例moduledecode(A,F); parameterwidth=1,polarity=1;endmodulemoduletop; decode#(4,0)D1(A4,F16);decode#(5)D2(A5,F32);endmodule2023/5/2830第三十页,共五十三页,编辑于2023年,星期六参数要点常用参数来声明运行时的常数。可用字符串表示的任何地方,都可以用定义的参数来代替。参数是本地的,其定义只在本模块内有效。2023/5/2831第三十一页,共五十三页,编辑于2023年,星期六举例说明:modulemd1(out,in1,in2);…..parametercycle=20,prop_del=3,setup=cycle/2-prop_del,p1=8,x_word=16’bx,file=“/user1/jmdong/design/mem_file.dat”;wire[p1:0]w1;//用参数来说明wire的位宽
….initialbegin$open(file);…….#20000display(“%s”,file);$stopend….endmodule举例2023/5/2832第三十二页,共五十三页,编辑于2023年,星期六
举例说明:modulemod(out,ina,inb);…parametercycle=8,real_constant=2.039,file=“/user1/jmdong/design/mem_file.dat”;…endmodulemoduletest;…modmk(out,ina,inb);defparammk.cycle=6,mk.file=“../my_mem.dat”;…endmodule
参数值的改写(方法之一)
2023/5/2833第三十三页,共五十三页,编辑于2023年,星期六举例说明:modulemod(out,ina,inb);…parametercycle=8,real_constant=2.039,file=“/user1/jmdong/design/mem_file.dat”;…endmodulemoduletest;…mod#(5,3.20,“../my_mem.dat”)mk(out,ina,inb);…endmodule
参数值的改写(方法之二)2023/5/2834第三十四页,共五十三页,编辑于2023年,星期六3.2.2变量硬件描述语言中,变量的数据类型用来表示数字电路中的物理连线、数据存储和传输单元等物理量。2023/5/2835第三十五页,共五十三页,编辑于2023年,星期六3.2.2数据类型线网类型:表示结构化元件间的物理连线,综合后一般为连线节点网络(线网)数据类型表示结构实体之间的物理连接不能存储值,必须受到驱动值assign的驱动寄存器类型:抽象的数据存储单元只能在always和initial语句中被赋值,有可能被综合成寄存器2023/5/2836第三十六页,共五十三页,编辑于2023年,星期六Nets(网络连线):由模块或门驱动的连线。驱动端信号的改变会立刻传递到输出的连线上。例如:右图上,selb的改变,会自动地立刻影响或门的输出。netsabslselbselansloutNets线网类型2023/5/2837第三十七页,共五十三页,编辑于2023年,星期六连接(Nets)类型变量的种类:在为不同工艺的基本元件建立库模型的时候,常常需要用不同的连接类型来与之对应,使其行为与实际器件一致。常见的有以下几种。
类型功能
wire,tri
对应于标准的互连线(缺省)
supply1,supply2
对应于电源线或接地线
wor,trior
对应于有多个驱动源的线或逻辑连接
wand,triand
对应于有多个驱动源的线与逻辑连接
trireg
对应于有电容存在能暂时存储电平的连接
tri1,tri0
对应于需要上拉或下拉的连接如果不明确地说明连接是何种类型,应该是指wire类型。Nets的种类2023/5/2838第三十八页,共五十三页,编辑于2023年,星期六Nets线网类型wire和tri线网:两者均为连线,tri用于描述多个驱动源同时驱动同一根线的线网类型,并无特殊意义
wireA,B;wire[7:0]Data;tri[15:0]DataBus;Verilog数据类型的缺省值为1位wire2023/5/2839第三十九页,共五十三页,编辑于2023年,星期六wire型wire型数据通常用来表示以assign语句赋值的组合逻辑信号。模块的输入输出信号类型缺省定义为wireWire可以作为表达式输入,也可以作为assign语句或实例元件的输出。
wiredata1,data2,…,datan; wire[n-1:0]data1,data2,…,datan;2023/5/2840第四十页,共五十三页,编辑于2023年,星期六
寄存器(register)类型变量
register型变量能保持其值,直到它被赋于新的值。register型变量常用于行为建模,产生测试的激励信号。常用行为语句结构来给寄存器类型的变量赋值。abslselbselansloutreg_areg_selreg_bRegister2023/5/2841第四十一页,共五十三页,编辑于2023年,星期六
寄存器(register)类型变量的数据类型
寄存器类型变量共有四种数据类型:类型功能
.
reg无符号整数变量,可以选择不同的位宽。
integer有符号整数变量,32位宽,算术运算可产生2的补码。
real有符号的浮点数,双精度。
time无符号整数变量,64位宽(Verilog-XL仿真工具用64位的正数来记录仿真时刻)Register的种类可综合2023/5/2842第四十二页,共五十三页,编辑于2023年,星期六reg型registertype表示一个抽象的数据存储单元,对应的是具有状态保持作用的电路元件(触发器、寄存器)只能在always语句和initial语句中被赋值,其值在两次赋值之间被保存,具有x的缺省值。在always,initial等过程块内,被赋值的每一个信号必须是寄存器型。
regdata1,data2,…,datan; reg[n-1:0]data1,data2,…,datan;2023/5/2843第四十三页,共五十三页,编辑于2023年,星期六输入口(input)可以由寄存器或网络连接驱动,但它本身只能驱动网络连接。输出口(output)可以由寄存器或网络连接驱动,但它本身只能驱动网络连接。输入/输出口(inout)只可以由网络连接驱动,但它本身只能驱动网络连接。如果信号变量是在过程块(initial块或always块)中被赋值的,必须把它声明为寄存器类型变量
如何选择正确的数据类型?2023/5/2844第四十四页,共五十三页,编辑于2023年,星期六举例说明数据类型的选择moduletop;wirey;rega,b;DUTu1(y,a,b);initialbegina=0;b=0;#10a=1;….endendmodule模块DUT的边界输入口输出口输出/入口netnetnet/registernetnet/registernetinoutmoduleDUT(Y,A,B_);outputY;inputA,B:wireY,A,B;and(Y,A,B);endmodule举例说明数据类型的选择2023/5/2845第四十五页,共五十三页,编辑于2023年,星期六
在过程块中对变量赋值时,忘了把它定义为寄存器类型(reg)或已把它定义为连接类型了(wire)把实例的输出连接出去时,把它定义为寄存器类型了把模块的输入信号定义为寄存器类型了。这是经常犯的三个错误!!!选择数据类型时常犯的错误
2023/5/2846第四十六页,共五十三页,编辑于2023年,星期六Verilog模块中的信号只有两种主要的信号类型:
-寄存器类型:reg在always块中被赋值的信号,往往代表触发器,但不一定是触发器。-连线类型:wire用assign关键词指定的组合逻辑的信号或连线2023/5/2847第四十七页,共五十三页,编辑于2023年,星期六Verilog模块中的信号要点需要注意的是:
-寄存器(reg)类型不一定是触发器。
-它只是在always块中赋值的信号。2023/5/2848第四十八页,共五十三页,编辑于2023年,星期六Verilog中reg与wire的不同点用寄存器(reg)类型变量生成组合逻辑举例:modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wire
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆机电职业技术学院《创业管理》2023-2024学年第二学期期末试卷
- 兰州职业技术学院《道路景观设计》2023-2024学年第一学期期末试卷
- 昆明冶金高等专科学校《装饰图案基础》2023-2024学年第二学期期末试卷
- 日照航海工程职业学院《首饰设计与制作》2023-2024学年第二学期期末试卷
- 西藏民族大学《医学免疫学研究进展》2023-2024学年第二学期期末试卷
- 吉林电子信息职业技术学院《软件设计开发综合实训》2023-2024学年第二学期期末试卷
- 铜仁职业技术学院《生物质废弃物资源化利用》2023-2024学年第二学期期末试卷
- 上海杉达学院《细胞及分子生物学实验》2023-2024学年第二学期期末试卷
- 江海职业技术学院《天然药物化学》2023-2024学年第一学期期末试卷
- 延安职业技术学院《高频电子电路》2023-2024学年第二学期期末试卷
- 第10课 养成遵纪守法好习惯
- 《手工制作》课件-幼儿园挂饰
- 【初中地理】西亚+课件-2024-2025学年人教版地理七年级下册
- 2025修订版《保障中小企业款项支付条例》解读学习课件
- 鼓励员工发现安全隐患的奖励制度
- 苏教版一年级下册数学全册教学设计(配2025年春新版教材)
- 2025年水质化验工题库 - 副本
- 【特易资讯】2025中国二手车行业出口分析及各国进口政策影响白皮书
- (一诊)2025年兰州市高三诊断考试生物试卷(含官方答案)
- 2025年吉林司法警官职业学院单招职业倾向性考试题库必考题
- 光伏发电项目施工的应急预案与措施
评论
0/150
提交评论