




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019 12 23 1 44 verilogforrtlcoding 2019 12 23 2 44 内容提要 面向综合的verilog语法子集面向测试的verilog语法子集 2019 12 23 3 44 ieeehdlstandards vhdlieeestd1076 1987ieeestd1076 1993ieeestd1076 2000 vhdl ams ieeestd1076 2002verilogieeestd1364 1987ieeestd1364 1995ieeestd1364 2000 2019 12 23 4 44 程序结构 libraryieee entity实体名isport 端口表 end architecture结构体名 信号定义begin功能描述end configuration配置名 vhdl entity modulename portlist数据类型定义wire reg功能描述 verilog module 2019 12 23 5 44 verilog代码示例 moduletest a b c d z sum inputa b input 3 0 c d outputz output 3 0 sum reg 3 0 sum 端口信号wireand out 内部信号andinstance1 a b and out invinstance2 and out z always cord beginsum c d endendmodule modulename portlist数据类型定义wire reg功能描述 verilog代码区分大小写 2019 12 23 6 44 modulename portlist 信号方向 input output inout信号类型 wire reg moduletest a b c d z sum inputa b input 3 0 c d outputz output 3 0 sum reg 3 0 sum wireand out always cord beginsum c d endendmodule 只有always initial过程的输出才需要定义为reg 端口信号的缺省类型是wire 可以省略 2019 12 23 7 44 verilog的四值逻辑 0 1 x z 2019 12 23 8 44 数的表示方式 size 以bit为单位base b 二进制 o 八进制 d 十进制 h 16进制 value 和进制相应的数值 x z x z不区分大小写 例16 32位十进制数8 d168 h108 b0001 001032 bx 32位x2 b z z都表示高阻 2019 12 23 9 44 常用数据类型 wire 线网 表示元件之间的物理连接wirea b wire 3 0 address reg 寄存器 always initial过程的输出不要和flip flop d触发器 混淆reg 1 5 state newstate 2019 12 23 10 44 另一种代码风格 modulepie decoder0 rst clk pie data in io pie data out en pie data out bit pie data out bit en pie trcal higher err inputrst inputclk inputpie data in io outputregpie data out en outputenablecontrolleroutputregpie data out bit serialoutputoutputregpie data out bit en when 1 onebitisreadyoutputreg 8 0 pie trcal higher wirepie data in reg 5 0 pie tari higher reg 7 0 pie rtcal higher reg 3 0 pie decoder state parameterst0 4 b0000 st1 4 b0001 st2 4 b0010 st3 4 b0011 st4 4 b0100 st5 4 b0101 st6 4 b0110 st7 4 b0111 st8 4 b1000 2019 12 23 11 44 vhdl电路模块的实现 vhdl并行赋值语句 选择并行赋值语句条件并行赋值语句进程 process 变量赋值 顺序赋值 if语句case语句元件例化portmap architecturearchofxxxisbegincb ii seg b seg endarch 2019 12 23 12 44 vhdl和verilog的对比 vhdl并行赋值语句 选择并行赋值语句条件并行赋值语句进程 process 变量赋值 顺序赋值 if语句case语句元件例化portmap verilog连续赋值语句 assign 过程 always 阻塞赋值 非阻塞赋值 if语句case语句元件例化 2019 12 23 13 44 连续赋值语句 assign 实现组合逻辑电路 moduletest out2 out1 in outputout2 out1 inputin wirea bendmodule 二选一muxsel为 1 时选择i1 否则i0 可以是复杂的布尔函数 2019 12 23 14 44 连续赋值语句 assign 避免出现反馈环路 assigna b a 2019 12 23 15 44 常用的操作符 算术操作 取模 关系操作 条件操作 连接和复制 nx 2019 12 23 16 44 几种操作的比较 位操作 归约操作和逻辑操作 2019 12 23 17 44 几种操作的比较 算术和关系操作 assignc a b assignbigger a b assigneq a b 2019 12 23 18 44 元件例化 vhdlu1 seg7portmap b ii b seg u1 seg7portmap ii b ii seg b seg verilogandu1 a b and out andu1 a a b b o and out 2019 12 23 19 44 过程 过程 always 阻塞赋值 非阻塞赋值 if语句case语句 always posedge negedgesigor begin语句块end always aorborcor begin语句块end 2019 12 23 20 44 if语句 if 表达式 语句else语句 if 表达式 语句elseif 表达式 语句else语句 if a b res 1 elseif a c beginres 2 out 4 endelseres 3 2019 12 23 21 44 case语句 defineop load2 b00 defineop add2 b01 defineop sub2 b10always op begincase op op load out din op sub out a b default out a b endcaseend 2019 12 23 22 44 阻塞赋值和非阻塞赋值 阻塞赋值 阻塞性过程赋值在其后所有语句执行前执行 即在下一语句执行前该赋值语句完成执行 非阻塞性 过程赋值中 对目标的赋值是非阻塞的 因为时延 但可预定在将来某个时间步发生 根据时延 如果是0时延 那么在当前时间步结束 当非阻塞性过程赋值被执行时 计算右端表达式 右端值被赋于左端目标 并继续执行下一条语句 预定的最早输出将在当前时间步结束时 这种情况发生在赋值语句中没有时延时 在当前时间步结束或任意输出被调度时 即对左端目标赋值 在同一个always initial块里不要混用两种赋值语句 2019 12 23 23 44 在实现组合逻辑电路的always块里用阻塞赋值类似vhdl在process里对变量赋值 阻塞赋值实现组合逻辑电路 moduletest regdout always aorborc if b dout a elsedout c endmodule always块的输出 2019 12 23 24 44 阻塞赋值实现组合逻辑电路 在实现组合逻辑电路的always块里用阻塞赋值类似vhdl在process里对变量赋值 always aorborx beginx aend always aorborx beginx aend 2019 12 23 25 44 always块的敏感表 实现组合逻辑电路的always块敏感表必须写全 否则仿真结果和综合结果会不一致 always aorborc f a always aorb f a 2019 12 23 26 44 避免latch的产生 实现组合逻辑电路的always块中if和case语句的分支必须写全 always bcd begincase bcd 4 d0 out 3 b001 4 d1 out 3 b010 4 d2 out 3 b011 endcaseend latch always aorborgate beginif gate out a b end 2019 12 23 27 44 避免latch的产生 always bcd begincase bcd 2 b00 beginout1 3 b001 out2 2 b00 end2 b01 beginout1 3 b011 out2 2 b10 end2 b10 out1 3 b101 2 b11 beginout1 3 b111 out2 2 b11 endendcaseend 没有改变out2导致产生latch 2019 12 23 28 44 避免产生latch的办法 第一种第二种 next state 3 b000 case cur state endcase case cur state default next state 3 b000 endcase 2019 12 23 29 44 触发器 always块的 posedgeclk 或 negedgeclk 赋值语句的输出信号 always posedgeclk beginout aend process clk beginifclk eventandclk 1 thenout aandb endif endprocess 2019 12 23 30 44 带低电平有效异步复位端的触发器 always posedgeclkornegedgereset beginif reset out 0 elseout aend process clk reset beginifrst 0 thenout 0 elsifclk eventandclk 1 thenout aandb endif endprocess else分支对应了时钟沿 都必须是边沿 2019 12 23 31 44 带同步复位端的触发器 always posedgeclk beginif reset dout 0 elsedout din end process clk beginifclk eventandclk 1 thenifreset 0 thendout 0 elsedout din endif endif endprocess 2019 12 23 32 44 非阻塞赋值 实现时序电路 在实现时序电路的always块里用非阻塞赋值类似vhdl在process里对信号赋值 always posedgeclk beginx a y x z y end always posedgeclk beginx a y x z y end 2019 12 23 33 44 更复杂的时序电路 状态机 always posedgeclkornegedgereset beginif reset out 0 else云图描述end 2019 12 23 34 44 vhdltestbench的结构 counter counter vhd top tb vhd rst clk 4 q waveformviewer 2019 12 23 35 44 verilogtestbench的结构 counter counter v top tb v rst clk 4 q waveformviewer 2019 12 23 36 44 verilogtestbench的结构 timescale1ns 1psmoduletb 信号定义 元件例化 产生激励向量 显示输出结果endmodule 时间精度功能仿真 ns门级仿真 ps 时间单位 2019 12 23 37 44 testbench文件 tb v timescale1ns 1nsmoduletop regclk rst wire 3 0 dout counteruut dout clk rst initialbeginclk 0 forever 10clk clk end initialbeginrst 1 15rst 0 10rst 1 175 finish endinitialbegin monitor time b b b rst clk dout endendmodule 时间精度 时间单位 2019 12 23 38 44 initial和always的区别 initial只执行一次 always循环执行initial的用处产生激励向量检查输出波形赋初值 2019 12 23 39 44 用initial赋初值 reg 3 0 out always negedgerstorposedgeclk beginif rst out 0 elseout out 1 end reg 3 0 out initialout 0 always posedgeclk beginout out 1 end 2019 12 23 40 44 激励信号的产生 时钟信号 initialbeginclk 0 forever 10clk clk end复位信号 initialbeginrst 1 15rst 0 10rst 1 175 finish end initialforkrst 1 15rst 0 25rst 1 200 finish join 由时间单位和延时决定 timescale1ns 1ns 时间精度 时间单位 initialbeginrst 1 rst 150 rst 251 200 finish end 2019 12 23 41 44 检查输出信号 timescale1ns 1nsmodule
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 8.2.5 生物的变异 说课稿-2025-2026学年鲁科版(五四学制)生物八年级下册
- Chapter1 Study tours教学设计-2025-2026学年小学英语6B香港朗文版
- 第三节 DNA通过复制传递遗传信息教学设计-2025-2026学年高中生物浙科版2019必修2 遗传与进化-浙科版2019
- 十六 项脊轩志教学设计-2025-2026学年高中语文高一下册华东师大版
- 2025年中考数学试题分类汇编:圆的有关位置关系(9大考点51题) (第1期)解析版
- 2025年采购与供应链管理岗位职业技能资格知识考试题与答案
- 1.3地球的历史教学设计2023-2024学年高中地理人教版(2019)必修第一册
- 2025年体育学科专业知识教师招聘考试押题卷及答案(一)
- 一年级语文上册 第7单元 课文3 11 项链说课稿 新人教版
- 蓄水池防溺水知识培训课件
- 物业客服管理知识培训课件
- 2025-2026学年湘教版(2024)初中数学八年级上册教学计划及进度表
- GB/T 45763-2025精细陶瓷陶瓷薄板室温弯曲强度试验方法三点弯曲或四点弯曲法
- 【MOOC】理解马克思-南京大学 中国大学慕课MOOC答案
- 夏商周考古课件 第1章 绪论
- GB/T 23723.1-2009起重机安全使用第1部分:总则
- 《汽车发动机检修》课程标准
- GB308-2002滚动轴承钢球
- 夹芯彩钢复合板吊顶施工方案
- 高二物理培优计划
- 初中英语阅读理解100篇
评论
0/150
提交评论