




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VerilogHDL 第九章硬件描述语言简介 HDL的含义 HardwareDescriptionLanguage VerilogHDL与其他HDL比较 VerilogHDL 告诉我你想要电路做什么 我给你提供能实现这个功能的硬件电路 VHDL 和VerilogHDL类似ABEL AHDL 告诉我你想要什么样的电路 我给你提供这样的电路 什么是VerilogHDL能够对数字逻辑电路的功能和结构进行描述的一种高级编程语言PLD FPGA的设计开发语言编写程序描述数字电路的功能与结构描述电路的功能描述电路的结构表达具有并行性 VerilogHDL特点 符合C语言语法习惯简单 容易上手 缩短培训时间 如果有数字电子技术和C语言的基础 稍加学习即可编写能实现的电路 但也仅仅是语法上的相似而已并发执行 多条语句可能同时执行 在硬件上 实现不同功能的电路在同一时刻工作具有时序的概念 硬件电路输入到输出存在延迟 语法规则死 纠错仿真功能弱 错误信息不完整 较C语言更难发现错误 VerilogHDL语言的描述风格 VerilogHDL语言的描述风格 或者说描述方式 又可分为三类行为型描述指对行为与功能进行描述 它只描述行为特征 而没有涉及到用什么样的时序逻辑电路来实现 因此是一种使用高级语言的方法 具有很强的通用性和有效性 数据流型描述指通过assign连续赋值实现组合逻辑功能的描述 结构型描述指描述实体连接的结构方式 它通常通过实例进行描述 将Verilog已定义的基元实例嵌入到语言中 2选1数据选择器及仿真研究 moduleMux21 a b s y inputa b inputs outputy assigny s 0 a b endmodule 1 assign语句 2 表达式1 表达式2 表达式3 数据流描述 moduleMux21 a b s y inputa b inputs outputy wired e 1assignd a 2endmodule 行为级描述 MUX的行为可以描述为 只要信号a或b或s发生变化 如果s为0则选择a输出 否则选择b输出 modulemux21 y a b s inputa b s outputy regy always soraorb if s y a elsey b endmodule 在行为级模型中 逻辑功能描述采用高级语言结构 如 while wait if case Logicaloperators逻辑运算符 与 或 非 与逻辑优先级别高于或逻辑 但都低于关系和等式运算符 results 1 真 0 假 andx 不确定值 a ba b 1 b c c d a b 1 b c c d if inword if inword 0 结构型描述 结构级Verilog适合开发小规模元件 如ASIC和FPGA的单元Verilog内部带有描述基本逻辑功能的基本单元 primitive 如and门 综合产生的结果网表通常是结构级的 用户可以用结构级描述简单的组合或时序逻辑 下面是MUX的结构级描述 采用Verilog基本单元 门 描述 描述中含有传输延时 modulemux21 out a b sl inputa b sl outputout notu1 nsl sl and 1u2 sela a nsl and 1u3 selb b sl or 2u4 out sela selb endmodule 4选1数据选择器实例之一 modulemux4 1 out in0 in1 in2 in3 sel outputout inputin0 in1 in2 in3 input 1 0 sel regout always in0orin1orin2orin3orsel case sel 2 b00 out in0 2 b01 out in1 2 b10 out in2 2 b11 out in3 default out x endcaseendmodule wire 7 0 bus 8位矢量网表busreg 0 40 addr 41位矢量寄存器addrreg 1 4 b 6位矢量寄存器bbus 0 bus的第0位bus 2 0 bus的三位最低有效位 注意不能用bus 0 2 应和定义中保持一致 addr 0 1 addr的两位最高有效位 数的表示方法 整型常量decimal hexadecimal octalorbinaryformat 两种表达方法简单的十进制数 10 9 156 attention 必须在进制符号前加 号 并且 号和进制符号间不能存在空格进制符号 b或B 二进制 d或D 十进制 h或H 十六进制 o或O 八进制 659 Asigneddecimalnumber h837FF isahexadecimalnumber b101 isa3 bitbinarynumber o7460 isanoctalnumber4af isillegal hexadecimalformatrequires h 数字与进制之间可以有空格5 D3数字电路中 x表示不定值 z表示高阻态 可在十六进制 八进制和二进制中使用x和z 十六进制中一个x表示有四位都是x 八进制中一个x表示三位都是x 二进制中则表示一位是x z用法同理 unsizedconstants32bit10 32 d10 32 b10101 32 d1 32 b1当实际数据位数小于定义的位宽时 如果是无符号数 则在左边补零 如果无符号数最左边是 x 则在左边补 x 如果无符号数左边是 z 则在左边补 z 12 h3x 12 h03x 12 hzx 12 hzzx 在表示长数据时还可以用下划线 进行分割以增加程序的可读性 16 b1001 0110 1111 zzzz islegalsyntax8 b 1110 1101 isillegalsyntax case语句的语法结构 case 表达式 选项值1 语句1 选项值2 语句2 选项值3 语句3 default 缺省语句 endcase 4选1数据选择器实例之二 modulemux4 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 2 bx endendmodule if 表达式1 语句1 elseif 表达式2 语句2 elseif else语句n if a 0 if b 0 c 1 elsec 0 begin语句1 语句2 语句n end if a 0 beginif b 0 C 1 endelsec 0 缺省项问题 moduleex3reg y a b c inputa b c outputy regy rega always aorborc beginif aendendmodule moduleex4reg y a b c inputa b c outputy regy rega always aorborc beginif aendendmodule moduleinccase a b c d e inputa b c d outpute rege always aorborcord case a b 2 b11 e d 2 b10 e c endcaseendmodule 4位加法器电路及仿真研究 moduleadd full A B C Carry S inputA B C outputCarry S assignS A B C assignCarry Aendmodule 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 u2 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 实例 Instances 例化 instantiation 设计中我们可能需要调用一些已经定义好的模块 作为我们电路中的单元 调用这些模块的过程 称为实例化 instantiation 调用完之后 这些电路中的模块单元称为实例 Instance 实例的使用格式为 模块的定义只是说明该模块的功能与接口 它只提供了一个模板 它要在电路中获得实际应用与实现需要被调用 实例化 Verilog中不允许嵌套定义模块 即一对module和endmodule之间只能定义一个模块 但一个模块内可以通过实例的方式多次调用其他模块 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 moduledecode47 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语句进行译码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 4 d7 a b c d e f g 7 b1110000 4 d8 a b c d e f g 7 b1111111 4 d9 a b c d e f g 7 b1111011 default a b c d e f g 7 bz endcaseendendmodule 七段数码管译码器及仿真研究 D触发器及仿真研究 例9 6 10moduled ff q d clk outputq inputd clk regq always posedgeclk q d endmodule moduled ff q1 q2 d clk outputq1 q2 inputd clk regq1 q2 always posedgeclk beginq1 d q2 q1 endendmodule 例9 6 12moduled ff q1 q2 d clk outputq1 q2 inputd clk regq1 q2 always posedgeclk beginq1 d 1q2 q1 2endendmodule 计数器及仿真研究 例9 6 134位加法计数器modulecount4 out reset clk output 3 0 out inputreset clk reg 3 0 out always posedgeclk beginif reset out 0 同步复位elseout out 1 计数endendmodule 同步置数同步清零加法计数器 modulecount 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 同步清0 低电平有效elseif load out data 同步预置elseout out 1 计数endendmodule 异步清零计数器 modulecount2 out reset clk output 7 0 out inputclk reset reg 7 0 out always posedgeclkornegedgereset beginif reset out 0 elseout out 1 计数endendmodule 环扭型计数器 modulejohnson clk clr out inputclk clr output 3 0 out reg 3 0 out always posedgeclk beginif clr out 1 右移运算out 3 out 0 endendmodule out 1 a n或a na代表要进行移位的操作数 n代表要移几位 这两种移位运算都用0来填补移出的空位 例如 start 1 start在初始时刻设为值0001result start 2 移位后 start的值为0100 然后赋给result modulejohnson clk clr out inputclk clr output 3 0 out reg 3 0 out always posedgeclkornegedgeclr beginif clr out 1 右移运算out 3 out 0 endendendmodule modulelfsr4 1 clk Q inputclk output 3 0 Q wire 3 0 Q wirenQ0 assignnQ0 Q 0 DFFDFF 0 CLK clk Q Q 0 D Q 1 DFFDFF 1 CLK clk Q Q 1 D Q 2 DFFDFF 2 CLK clk Q Q 2 D Q 3 DFFDFF 3 CLK clk Q Q 3 D nQ0 endmodule 有限状态机及其仿真研究 控制电路的核心部分采用always和case语句 状态保存在寄存器中 根据寄存器不同的值 状态 执行不同的操作 case语句用于选择不同的状态和对应各种状态的输出逻辑 FSM是在时钟沿的同步控制作用下从一个状态转换成另一个状态 采用寄存器型变量 avariableofregdatatype 赋值 设计一个自动售货机的逻辑电路 它的投币口每次只能投入一枚五角或一元的硬币 投入一元五角钱硬币后机器自动给出一枚饮料 投入两元 两枚一元 硬币后 在给出饮料的同时找回一枚五角的硬币 逻辑抽象一元五角售出一瓶饮料找钱one dollarhalf dollardispensehalf out状态idle 未投币前初始状态状态half 投入五角状态one 投入一元 一元或两五角 一元五角售出一瓶饮料找钱one dollarhalf dollardispensehalf out AB YZ modulemachine one dollar half dollar collect half out dispense reset clk parameteridle 2 b00 half 2 b01 one 2 b10 inputone dollar half dollar reset clk outputcollect half out dispense regcollect half out dispense reg 2 0 state always posedgeclk beginif reset
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤炭热解产物分离技术-洞察及研究
- 煤矿灾害应急响应机制的信息化支持-洞察及研究
- 物联网技术在城市空间数据中的应用-洞察及研究
- 现代教育公平问题探讨-洞察及研究
- 包容性在图书内容构建中的应用-洞察及研究
- 土壤酸胁迫下幼苗对邻体植物的响应机制与生态意义探究
- 施工特殊天气施工方案
- 佛山钢板桩防护施工方案
- 恒温大棚工程施工方案
- 济南二层电梯施工方案
- 中职高教版(2023)语文职业模块-第五单元:走近大国工匠(一)展示国家工程-了解工匠贡献【课件】
- 标签打印机的快速批量打印方法
- GB/T 1504-2024铸铁轧辊
- 食品行业创新与研发
- 电力各种材料重量表总
- 樊荣-《医疗质量管理办法》核心制度要点解析与案
- 男性不育症诊治指南课件
- 《声声慢》省赛一等奖
- 消防安全教育培训记录表
- 国家开放大学《实用管理基础》形考任务1-4参考答案
- 2023混凝土结构耐久性电化学修复技术规程
评论
0/150
提交评论