- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VerilogHDL语言的描述语句.
第4节 Verilog HDL语言的描述语句
Verilog HDL 描述语句
2.4.1 结构描述形式?通过实例进行描述的方法,将Verilog HDL预先定义的基本单元实例嵌入到代码中,监控实例的输入。Verilog HDL中定义了26个有关门级的关键字,比较常用的有8个。在实际工程中,简单的逻辑电路由逻辑门和开关组成,通过门元语可以直观地描述其结构。 基本的门类型关键字如下所述:
and
nand
nor
or
xor
xnor
buf
not
??????? Verilog HDL支持的基本逻辑部件是由该基本逻辑器件的原语提供的。其调用格式为: ??????? 门类型 实例名 (输出,输入1,输入2,……,输入N) ??????? 例如,nand na01(na_out, a, b, c ); ??????? 表示一个名字为na01的与非门,输出为na_out,输入为a, b, c。 ??????? 例2-5 一个简单的全加器例子: module ADD(A, B, Cin, Sum, Cout); ??????? input A, B, Cin; ??????? output Sum, Cout; ??????? // 声明变量 ??????? wire S1, T1, T2, T3; ??????? xor X1 (S1, A, B), ????????????? X2 (Sum, S1, Cin); ??????? and A1 (T3, A, B), ??????????????? A2 (T2, B, Cin), ??????????????? A3 (T1, A, Cin); ???????? or O1 (Cout, T1, T2, T3); endmodule 在这一实例中,模块包含门的实例语句,也就是包含内置门xor、and和or的实例语句。门实例由线网型变量S1、T1、T2和T3互连。由于未指定顺序,门实例语句可以以任何顺序出现。 门级描述本质上也是一种结构网表。在实际中的使用方式为:先使用门逻辑构成常用的触发器、选择器、加法器等模块,再利用已经设计的模块构成更高一层的模块,依次重复几次,便可以构成一些结构复杂的电路。其缺点是:不易管理,难度较大且需要一定的资源积累。?2.4.2 数据流描述形式数据流型描述一般都采用assign连续赋值语句来实现,主要用于实现组合功能。连续赋值语句右边所有的变量受持续监控,只要这些变量有一个发生变化,整个表达式被重新赋值给左端。这种方法只能用于实现组合逻辑电路。其格式如下: ??????? assign L_s = R_s; ?例2-6 一个利用数据流描述的移位器 module mlshift2(a, b); ??????? input a; ??????? output b; ??????? assign b = a2; endmodule 在上述模块中,只要a的值发生变化,b就会被重新赋值,所赋值为a左移两位后的值。?2.4.3 行为描述形式?行为型描述主要包括过程结构、语句块、时序控制、流控制等4个方面,主要用于时序逻辑功能的实现。 1.过程结构 过程结构采用下面4种过程模块来实现,具有强的通用型和有效性。
initial模块
always模块
任务(task)模块
?函数(function)模块
一个程序可以有多个initial模块、always模块、task模块和function模块。initial模块和always模块都是同时并行执行的,区别在于initial模块只执行一次,而always模块则是不断重复地运行。另外,task模块和function模块能被多次调用,其具体使用方法可参见3.5.3节的专题。(1)initial 模块 在进行仿真时,一个initial模块从模拟0时刻开始执行,且在仿真过程中只执行一次,在执行完一次后,该initial就被挂起,不再执行。如果仿真中有两个initial模块,则同时从0时刻开始并行执行。 ??????? initial模块是面向仿真的,是不可综合的,通常被用来描述测试模块的初始化、监视、波形生成等功能。其格式为: initial begin/fork ??????? 块内变量说明 ??????? 时序控制1 行为语句1; ??????? …… ??????? 时序控制n 行为语句n; end/join 其中,begin……end块定义语句中的语句是串行执行的,而fork……join块语句中的语句定义是并行执行的。当块内只有一条语句且不需要定义
您可能关注的文档
最近下载
- 基础化学高职高专第五版高琳第六章第一节化学平衡与平衡常数.pptx VIP
- 输电线路全寿命周期设计建设技术导则.pdf VIP
- 基础化学高职高专第五版高琳第十章氧化还原平衡.pptx VIP
- 人教B版高中数学必修二同步讲义:平面向量线性运算的应用(学生版+解析).pdf VIP
- 人教B版高中数学必修二讲义:向量的坐标及其运算(学生版+解析).pdf VIP
- 人教B版高中数学必修二同步讲义:向量的基本定理(学生版+解析).pdf VIP
- 基础化学高职高专第五版高琳第十一章脂肪烃.pptx VIP
- 浅谈搅拌站与精细化管理 - 管理文章.docx VIP
- 混凝土精细化管理.docx VIP
- 一种调料售货机的自动售货方法.pdf VIP
文档评论(0)