版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-2-181Verilog 语言基础一2022-2-182一 Verilog HDL 语言架构o 模块o 时延o 描述方式o 设计模拟2022-2-183模块-moduleo module 是Verilog描述的基本单元o module可被其它module例化o module内部可例化其它modulen层次化的设计方法n分而治之n设计大规模的复杂电路2022-2-184o module 包括说明性描述和功能性描述 module module_name(port_list); /Declaration part /port definition input,output,inout, /
2、 inside variable and task definition reg,wire,parameter, function,task /Statements part initial statement always statement assign statement module instantiation endmodule语句之间的顺序无关紧要变量在使用前必须声明2022-2-185o 一位半加器2022-2-186adderABsumcoutmodule adder( A, B, cout, sum ); /decalaration input 3:0 A; input 3:
3、0 B; output cout; output 3:0 sum; wire cout; wire 3:0 sum; /statement / adder functionality assign cout,sum= A+B;endmodule Dont forget the semicolonPort must have direction and width444o4位加法器2022-2-187一 Verilog HDL 语言架构o 模块o 时延o 描述方式2022-2-188时延o时延定义 timescale 1ns/100psp时延使用 # nump语句间延迟 sum = ab; #5
4、; cout = a&b;p语句内延迟 assign #2 sum = ab; 2022-2-189一 Verilog HDL 语言架构o 模块o 时延o 描述方式描述方式2022-2-1810描述方法o 数据流描述方法o 行为描述方法o 结构化描述方法o 混合设计描述方法2022-2-1811数据流描述方法nassign delay LHS_net = RHS_expression;nLHS_net 必须是线网变量n多个assign之间0时刻并行执行n连续赋值n抽象层次较低如 assign #1 abar = A;assign #1 bbar = B;assign #2 z0 = (
5、abar & bbar & en);assign #2 z1 = (abar ) p2-4译码器译码器逻辑框图逻辑框图波形图波形图数据流描述方式数据流描述方式2022-2-1813行为描述方法n侧重于对电路行为的高层次描述,抽像层次高ninitial 语言 和 always 语句n内部变量必须是寄存器型n过程赋值n多个always 语句 和多个initial 语句并存n所有的intial,always 在0时刻并发执行 always (sentive list) begin . endinitial begin end2022-2-1814initialtimescale 1n
6、s/100ps module test(pop,pid); output pop, pid; reg pop,pid; initial begin pop = 0; pid = 0; pop = #4 1; pid = #3 1; pop = #5 0; pid = #6 0; endendmoduletimescale 1ns/100ps module test(pop,pid); output pop, pid; reg pop,pid; initial begin pop = 0; pid = 0; #4; pop = 1; #3; pid = 1; #5; pop = #5 0; pi
7、d = #6 0; endendmodule顺序执行顺序执行顺序执行顺序执行2022-2-1815always2022-2-1816结构化描述方法p内置门级原语内置门级原语p内置开关级原语内置开关级原语p内置用户定义的原语内置用户定义的原语p模块实例模块实例2022-2-1817结构化描述方法module FA(a, b, cin,cout, sum); input a,b,cin; output cout,sum; / HDL modeling of 1 bit / full adder functionality assign count,sum = a+b+cin;endmodule F
8、Abaccincout一位全加器结构一位全加器结构adderABScoutFAFAFAFAmodule adder(A, B, cout, S ); input 3:0 A,B; output cout; output 3:0 s; wire c0, c1, c2; FA fa0( A0, B0, 1b0, c0, S0 ); FA fa1( A1, B1, c0, c1, S1 ); FA fa2( A2, B2, c1, c2, S2 ); FA fa3( A3, B3, c2, cout, S3 );endmodule Carry Chain由一位全加器设计四位加法器2022-2-181
9、9混合设计方法o 在module中,支持数据流描述,行为描述,以及结构化描述的混合使用。 module module_name(port_list); /Statements part / data stream assign statement / behavior desc. initial statement always statement / structural desc. module instantiation endmodule2022-2-1820o 一位全加器的混合设计2022-2-1821设计模拟(仿真)o 仿真的目的o 仿真的方法学o 仿真平台的结构2022-2-18
10、22二:Verilog HDL 语法(1)o 基本语言要素n1:标识符n2:注释,编写格式,系统任务,编译等n3:值集合 数的表示n4:端口类型n5:数据类型2022-2-1823标识符o 字母,数字,$符号,下划线组成o 第一个字符必须是字母或者下划线o 区分大小写o 保留字2022-2-1824o $abus o alwayso abuso aBbuso 5abuso _abuso Abus 等效于aBus不正确,第一个字母是$符不正确,第一个字母是数字不等于。区分大小Warning:标志符一定要有明确意义。同时建议不要用大小写来区分不同的标识符不正确,包括了非字母不正确,关键字2022-
11、2-1825o 基本语言要素n1:标识符n2:注释,编写格式,系统任务,编译等n3:数的表示 值集合n4:端口类型n5:数据类型2022-2-1826注释o /到本行结束o /* 可以扩展至多行 */Wire 0:3 abus; /地址总线2022-2-1827格式o Verilog 语言格式灵活,可以在一行内编写,也可以在多行内编写。input abus,bbus,cbus;input abus; /a地址总线input bbus;input cbus;o 可综合的编码风格为了增加程序的可读性,要求每行写一条语句。并添加注释2022-2-1828系统任务和函数o $开始为标识系统任务或者函数
12、o 在设计中之直接调用o 任务task和函数function的区别For Example:$display,$write,$monitor,$time,$finish,$stop2022-2-1829编译指令o 以引号开始的标识符为编译指令For Example:define,undef,ifdef,else,includedefault_nettype,restall,timescaleo definedefine word_length 32wire 0: word_length-1 word;1:没有分号2:引用2022-2-1830时间精度o Timescaletimescale 1n
13、s/10psFor example: assign a = #5 b; assign a = #5.123 b; o 时间单位 s,ms,us,ns,ps;p 重复定义时按最小计时单位和精度模拟时延单位,时延精度实际只能达到5.12ns注意:每个设计的必须要有timescale 说明2022-2-1831二:Verilog HDL 语法(1)o 基本语言要素n1:标识符n2:注释,编写格式,系统任务,编译等n4:端口类型n5:数据类型2022-2-1832值逻辑o四值逻辑1高电平,逻辑10低电平,逻辑0X不确定的逻辑状态Z高阻态2022-2-1833数的表示o表示方法:n数值基数符号合法标识符
14、二进制 B/b0,1,x,X,z,Z,?,_八进制O/o0-7, x,X,z,Z,?,_十进制D/d0-9, x,X,z,Z,?,_十六进制H/d0-9,a-f,A-F, x,X,z,Z,?,_2022-2-1834oBinary literalsn8b0000_0000n8b0 xx0_1xx1oHexadecimal literalsn32h0a34_def1n16haxxxoDecimal literalsn32d424b10_11Underscores are ignoredBase format(d,b,o,h)Decimal number representing size in
15、bits初学者必须使初学者必须使用严格的规范用严格的规范的表达的表达2022-2-1835o _:增加可读性o 最高有效位MSB在左边o 缺省为十进制o 位宽小于实际位数,舍去最高位。位宽大于实际位数,高位补0;o 10,3ac;o 6hF3o 4b12022-2-1836o 16HAa_Cdo 8hffFor examle:A:5b11112;B:5dF;C:5h1a;D:3d9Which one is right?2022-2-1837二:Verilog HDL 语法(1)o 基本语言要素n1:标识符n2:注释,编写格式,系统任务,编译等n3:数的表示 值集合n4:端口类型n5:数据类型2
16、022-2-1838端口类型o input 类型n描述输入端口o output 类型n描述输出端口o inout类型n描述双向端口o 端口定义方法 端口类型 msb:lsb 端口名字;如 input 0:3 dataa; output 0:4 datab; inout 0:3 addr;2022-2-1839二:Verilog HDL 语法(1)o 基本语言要素n1:标识符n2:注释,编写格式,系统任务,编译等n3:数的表示 值集合n4:端口类型n5:数据类型2022-2-1840Verilog数据类型Verilog 主要的数据类型:p线网型-Netsn 器件之间的物理连接。n 由驱动元件的值
17、决定。n 线网的缺省值为z。n assign 语句进行赋值 wire 0:3 abus; assign abus = 4b0000;pRegistern 抽象的储存单元。nalways语句和initial语句中被赋值,并且赋值保持不变n缺省值为x 。 reg 0:3 bbus;2022-2-1841数据类型NetsNets(网络连线) netsabslselbselansloutwire sela;assign sela = a& ns1;2022-2-1842线网(nets)类型nets包括子类型:包括子类型:n wire, tri 标准的互连线(缺省)n supply0, supp
18、ly1 电源线或接地线n wor, trior 多个驱动源的线或逻辑连接n wand, triand 多个驱动源的线与逻辑连接n trireg 有电容存在能暂时存储电平的连接n tri1, tri0 上拉或下拉的连接 2022-2-1843定义:定义:net_kind msb:lsb net1,net2,.,netN;nmsb,lsb,均为常量n缺省为一位宽n支持按位索引nNet1 满足标识符的定义规则n有意义的名字 wire Rdy,Start; /2个1位的连线wire abus; /wire 0:3 data1,data2; /wire awand2:0 Addr; /Addr是3位线与
19、支持按位引用:Data10Data11线网(nets)2022-2-1844wire 15:0 instruction;wire 15:0 memory_req;wire 7:0 small_net; instructionmemory_reqinstructionsmall_net?assign memory_req = instruction;assign small_net = instruction; 注意位宽注意位宽的匹配的匹配2022-2-1845线网(nets)1. wire和tri线网n 连线与三态线( tri )网语法和语义一致n 多个驱动源驱动同一根线的用三态线n 最常见的
20、线网类型tri c;assign c= a&b;assign c= a|b;2022-2-1846线网(nets)2.wor和trior线网n 某个驱动源为1,那么线网的值也为1。n 线或和三态线或( trior )在语法和功能上是一致的。wor MSB:LSB Art;trior MAX1: MIN1 Rdx, Sdx, Bdx;2022-2-1847线网(nets)3. wand和triand线网n 如果某个驱动源为0,那么线网的值为0。 n 线与和三态线与( triand )网在语法和功能上是一致的。wand -7:0 Dbus;triand Reset, Clk;2022-2-
21、18484. trireg线网 n 当三态寄存器(trireg)的所有驱动源都处于高阻态,保存 作用在线网上的最后一个值。n 三态寄存器线网的缺省初始值为x。trireg1:8 Dbus, Abus;线网(nets)2022-2-18495. tri0和tri1线网n 若无驱动源驱动,它的值为0(tri1的值为1)。tri00:3 GndBus;tri10:6 OtBus, ItBus;线网(nets)2022-2-18506. supply0和supply1线网Supply0 对“地”建模,即低电平0;Supply1 对电源建模,即高电平1;supply0 Gnd, ClkGnd;suppl
22、y1 2:0 Vcc;线网(nets)2022-2-1851数据类型寄存器类型register寄存器型变量pregister 型变量能保持其值,直到它被赋于新的值。pregister 型变量常用于行为建模。p使用行为语句给寄存器类型的变量赋值abslselbselansloutreg_areg_selreg_b2022-2-1852寄存器类型register寄存器类型变量共有四种数据类型: 类型 功能 reg无符号整数变量,可以选择不同的位宽integer有符号整数变量,32位宽,算术运算可产生2的补码。real64位有符号的浮点数,双精度。time无符号整数变量,64位宽(Verilog-X
23、L仿真工具用64位的正数来记录仿真时刻)2022-2-1853寄存器类型 1. reg寄存器类型reg msb: lsb reg1, reg2, . . . regN;nmsb,lsb,均为常量n缺省为一位宽n支持按位索引n初始值为xreg 3:0 Sat; /Sat为4 位寄存器。reg Cnt; /位1寄存器。reg 1:32 Kisp, Pisp, Lisp;需要kisp的第2位到第8位?Kisp2:82022-2-1854寄存器类型2. 存储器存储器是一个寄存器数组。存储器使用如下方式说明:reg msb: 1sb memory1 upper1:lower1 ;n 数组的维数不能大于2
24、nmsb和lsb, upper1,lower1均是常量n缺省为1位宽n按行索引例如:reg 0:3 MyMem 0:63/MyMem为6 4个4位寄存器的数组。reg Bog1:5/Bog为5个1位寄存器的数组。 2022-2-1855寄存器类型存储器和寄存器的区别n 存储器赋值不能在一条赋值语句中完成n 寄存器相当于深度为1的存储器n 寄存器可以直接一次性赋值赋值n 存储器被赋值时,需要定义一个索引。 for examplereg 1:5 Dig; /D i g为5位寄存器。. .Dig = 5b11011; reg BOg1:5; . .Bog = 5b11011;Bog0 = 1b1;B
25、og1 = 1b0;:Bog5 = 1b1;2022-2-1856寄存器类型For example:reg 0:3 Xrom 1:4.Xrom1 = 4hA;Xrom2 = 4h8;Xrom3 = 4hF;Xrom4 = 4h2;为存储器赋值的另一种方法是使用系统任务:1) $readmemb (加载二进制值)2) $readmemh (加载十六进制值) For example: $readmemh(Xrom,”test.dat”); 2022-2-1857寄存器类型3. Integer寄存器类型 integer integer1, integer2 ,. intergerN msb:1sb
26、;n msb和lsb是常量表达式,n一般用于高层次建模n不支持按位索引n至少是32位2022-2-1858寄存器类型4. time类型time time_id1, time_id2 , . . ., time_ idN msb:lsb ;ntime类型的寄存器用于存储和处理时间nmsb和lsb是表明范围界限的常量表达式。n64位宽time Events0:31; /时间值数组。time CurrTime; /CurrTime 存储一个时间值。For example:Currenttime = $time;2022-2-1859参数Paremeter parameter param1=const
27、_expr1, param2=const_expr2,.,paramN = const_exprN;n 参数是一个常量n参数经常用于定义时延和变量的宽度n使用参数说明的参数只被赋值一次n有利于程序可读性和复用,n主要用于状态机定义e.g. parameter LINELENGTH=132; paremeter IDLE = 5b00001; paremeter EX1 = 5b00010;2022-2-1860三:Verilog HDL 语法(2)o 表达式n操作数n操作符2022-2-1861操作数o 常数o 参数o 线网o 寄存器o 位选择 o 部分选择o 存储器单元o 函数调用2022-2-1862表达式操作符o 算术操作符o 关系操作符o 相等操作符o 逻辑操作符o 按位操作符o 规约操作符o 移位操作符o 条件操作符o 连接和复制操作符号2022-2-1863o 操作符表2022-2-1864o 算术操作符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快手内容运营面试全解全析
- 基于互联网 的培训市场开拓方案
- 护理课件制作软件使用教程和技巧
- 呼吸系统疾病患者的呼吸康复效果评估
- 护理员护理评估与计划制定
- 护理诊断中的患者教育策略
- 护理教学比赛组织与实施
- 护理实习带教常见问题及解答
- 零售业各分子公司中层管理者招聘面试技巧详解
- 快消品企业副总经理职位面试秘籍
- DB46-T 449-2021 海南省用水定额
- 小学体育与健康地质版(2024)三年级全一册教学设计(2025秋编辑)
- 2025至2030中国汽车改装套件行业项目调研及市场前景预测评估报告
- 2026年高考历史一轮复习:通史提纲(必修+选择性必修 知识提纲融合版)
- 学堂在线 雨课堂 学堂云 研究生生涯发展与规划 章节测试答案
- 支气管哮喘急性发作伴感染
- (正式版)DB35∕T 2250-2025 《免陪照护病区服务规范》
- 2025年江西省中考数学试卷真题(含标准答案)
- DB32/T 1087-2022高速公路沥青路面施工技术规范
- 吉林省松原市宁江区2024-2025学年八年级下学期期中数学试题(含部分答案)
- 《企业微信用户行为分析》课件
评论
0/150
提交评论