




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VerilogHDL基础总结明达科(成都)科技培训有限公司Verilog程序是由模块构成的。每个模块的内容都是位于module和endmodule两个语句之间。每个模块实现特定的功能。模块是可以进行层次嵌套的。正因为如此才可以将大型的的数字电路设计分割成不同的小模块来实现特定功能。Verilog语法的基本概念Verilog语法的基本概念如果每个模块都是可以综合的,通过综合工具可以把它们的功能描述全都转换为最基本的逻辑单元描述,最后可以用一个上层模块通过实例引用把这些模块连接起来,把它们整合成一个很大的逻辑系统。Verilog模块可以分为两种类型:一种是为了让模块最终能生成电路结构,另一种只是为了测试所设计的电路其逻辑功能是否正确。
Verilog语法的基本概念每个模块要进行端口定义,并说明输入输出口,然后对模块的功能进行描述。VerilogHDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分写多行。除了endmodule语句外,每个语句和数据定义的最后必须有分号。可以用/*.....*/和//.......对VerilogHDL程序的任何部分作注释。一个好的,有使用价值的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。
例子一modulemuxtwo(out,a,b,sl);
inputa,b,sl;
outputout;
regout;
always@(sloraorb)
if(!sl)
out=a;
elseout=b;
endmodule
例子二modulemuxtwo(out,a,b,sl);
inputa,b,sl;
outputout;
not
u1(ns1,sl);
and
#1
u2(sela,a,nsl);
and
#1
u3(selb,b,sl);
or
#2
u4(out,sela,selb);
endmodule
例子三module
adder(count,sum,a,b,cin);
input[2:0]a,b;
input
cin;
output
count;
output[2:0]sum;
assign{count,sum}=a+b+cin;
endmodule
思考题是否任意抽象的符合语法的Verilog模块都可以通过综合工具转变为电路结构?什么叫综合?仿真是什么?为什么要进行仿真?仿真可以在几个层面上进行?每个层面的仿真有什么意义?如何产生连续的周期测试时钟?
常用Verilog语法之一模块的结构(模块端口定义;模块内容)数据类型及其常量和变量运算符及表达式常用Verilog语法之一在Verilog模块中所有过程块(initial,always)、连续赋值语句、实例引用都是并行的;他们表示的是一种通过变量名互相连接的关系在同一模块中这三者出现的先后顺序没有关系。只有连续赋值的语句assign和实例引用语句可以独立与过程块而存在于模块功能定义部分。常用Verilog语法之一被实例引用的模块,其端口可以通过不同名的连线或寄存器类型变量连接到别的模块相应的输出输入信号端。在always块内被赋值的每一个信号都必须定义成reg型。常用Verilog语法之二逻辑;关系;等式;移位;位拼接;缩减运算符优先级别关键词赋值语句和块语句(顺序块、并行块、块名、起始时间和结束时间)常用语法之二位拼接运算符{},在C语言没有定义,但在verilog中确是一种十分有用的语法;缩减运算符也是C语言所没有的,合理的使用缩减运算符可以使程序简洁、明了;阻塞和非阻塞赋值也是C语言没有的。我们应当理解这是十分重要的概念,特别在编程写综合风格的模块中要加以注意;常用Verilog语法之三条件语句(if_else,case)循环语句(forever,repeat,while,for)例子程序Ifelse语句module test (CK,RES,EN,Q,CA);input CK,RES,EN ;output Q,CA ;reg Q ;
always@(posedgeCKorposedgeRES)begin if(RES==1’b1) Q<=1’b0 ; elseif(EN==1’b1) Q<=~Q ;endassignCA=EN&Q;endmodule4选一4to1seleclter(usefunctioncase)moduletest(din,sel,dout);input[3:0]din;input[1:0]sel;outputdout;functionselect; input[3:0]din;input[1:0]sel;case(sel)2'h0:select=din[0];2'h1:select=din[1];2'h2:select=din[2];2'h3:select=din[3];defaultselect=1'bx;endcaseendfunctionassigndout=select(din,sel);endmodule常用Verilog语法之四结构说明语句(initial,always语句)Task和function说明语句系统函数和任务常用Verilog语法之四一个程序模块可以有多个initial和always过程块;每个initial和always说明语句在仿真的一开始同时立即开始执行;initial语句只执行一次;always语句则是不断地重复活动着,直到仿真过程结束;常用Verilog语法之四always语句后跟着的过程块是否运行,则要看它的触发条件是否满足,如满足则运行过程块一次,再次满足则再运行一次,直至仿真过程结束;在一个模块中,使用initial和always语句的次数是不受限制的,它们都是同时开始运行的;task和function语句可以在程序模块中的一处或多处调用;常用Verilog语法之四Always的时间控制可以是沿触发也可以是电平触发,可以是单个信号也可以是多个信号,中间需要用关键字OR连接;沿触发的always块常常描述时序行为,如有限状态机;电平触发的always块常常用来描述组合逻辑电路;$display和$write的格式需要注意;常用Verilog语法之四initial
begin
areg=0;//初始化寄存器areg
for(index=0;index
memory[index]=0;
//初始化一个memory
end
在这个例子中用initial语句在仿真开始时对各变量进行初始化,注意这个初始化过程不需要任何时间。常用Verilog语法之五系统任务$monitor时间度量系统函数$time系统任务$finish$stop$readmemb$readmemh$random编译预处理(宏定义;文件包含处理;时间尺度;条件编译命令)常用Verilog语法之五在多模块调试的情况下,$monitor需配合$monitoron与$monitoroff使用$monito与$display的不同之处在于$monitor是连续监视数据的变化,因而往往只要在测试模块的initial块中调用一次就可以监视被测试的所以感兴趣的信号,不需要也不能在always过程中调用$monitor$time常用在$monitor中,用来做时间标记常用Verilog语法之五$stop和$finish常用在测试模块的initial模块中,配合时间延迟用来控制仿真的持续时间;$random在编写测试程序是十分有用的,可以用来产生边沿不稳定的波形,和随机出现的脉冲;$readmem在编写测试程序是也十分有用,可以用来生成给定的复杂数据流.常用Verilog语法之五宏定义字符串引用时,不要忘记,要用`引号Include等编译预处理也必须用`引导,而不是与C语言一样用#引导或不需要引导符;关于阻塞和非阻塞的原则归纳总结:原则一:时序电路建模时,用非阻塞赋值;原则二:锁存器电路建模时,用非阻塞赋值;原则三:用always块写组合逻辑时,采用阻塞赋值;常用Verilog语法之五原则四:在同一个always块中同时建立时序和组合逻辑电路时,用非阻塞赋值;原则五:在同一个always块,不要同时使用非阻塞赋值和阻塞赋值;原则六:不要在多个always块中为同一个变量赋值;原则七:用$strobe系统任务来显示用非阻塞赋值的变量值;原则八:在赋值是不要用#0延迟;练习分别使用如下方式设计一个3输入或门or3:连续赋值原语调用
UDP过程赋值练习设计一个对同步输入码流中“10110”序列的检测电路完成一个8位的双向移位寄存器的设计。要求能够在控制信号和时钟的共同作用下进行并行输入、左移和右移操作。其中的左移与右移操作都是用外来数据位填充移空位的。练习设计一个function,它完成两个4位操作数a与b之间的8种操作,产生5位的结果out(不考虑溢出情况),8种功能由3位的输入select信号选择,分别如下:select功能3’b000a3’b001a+b3’b010a-b3’b011a/b3’b100a%b3’b101a<<13’b110a>>13’b111(a>b)(比较)练习1、数字电路设计有那几种层次,可否分别举个例子?2、能否回忆一下在学校中用原理图进行设计的方法或在数字电路课中的进行数字电路设计的方法?能否用HDL语言简单描述一下4位宽的加法器?3、当前两种硬件描述语言是什么?4、以CPU为例,能否画出Top-Down的树状图?5、假设一D触发器组的器件Reg8,输入信号Din,输出信号Qout,位宽8位,时钟信号Clk,异步复位信号Rst,用于实现对8位数据总线的寄存,请描述出module语句,并画出电路的示意图练习6、HDL有哪几种建模方式?7、结构化建模方式主要的语句是什么?.A(A)的两个A具体含义是什么?8、数据流的建模方式采用什么语句?语法是什么?9、行为建模方式采用什么语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交叉作业铲车安全防护合作协议
- 义务解说活动方案
- 乌鸦手工活动方案
- 动火作业现场管理制度
- 公司车辆保险管理制度
- 总包管理制度
- 公司财务收据管理制度
- 医保服务协议管理制度
- 公司物流派车管理制度
- 全员创新流程管理制度
- 致命性哮喘抢救流程图
- 鲁科版四年级下册英语 复习
- 气管切开病人的护理PPT课件-(1)1
- GB/T 21709.8-2008针灸技术操作规范第8部分:皮内针
- GB/T 16823.3-2010紧固件扭矩-夹紧力试验
- GA/T 954-2011法庭科学工具痕迹中凹陷痕迹的检验规范
- GA/T 497-2016道路车辆智能监测记录系统通用技术条件
- 第六章恶意代码分析与防范培训课件
- 净化工程施工组织设计方案方案
- CNAS实验室评审不符合项整改报告
- 行车日常维护保养点检记录表
评论
0/150
提交评论