[经济学]第二讲 可综合veriloghdl基础_第1页
[经济学]第二讲 可综合veriloghdl基础_第2页
[经济学]第二讲 可综合veriloghdl基础_第3页
[经济学]第二讲 可综合veriloghdl基础_第4页
[经济学]第二讲 可综合veriloghdl基础_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Spring 2010,可综合VerilogHDL基础,Slide 1,基于FPGA的嵌入式系统设计电工电子工程基础,王贞,Spring 2010,可综合VerilogHDL基础,Slide 2,2 可综合VerilogHDL基础,2.1 可综合Verilog基础2.2 从Verilog到逻辑2.3 课堂操作实验,Spring 2010,可综合VerilogHDL基础,Slide 3,2.1 可综合VerilogHDL设计基础知识,2.1.1 综合的概念2.1.2 词法及数据类型2.1.3 值保持器的硬件建模,Spring 2010,可综合VerilogHDL基础,Slide 4,2.1.1 综合的概念,通俗地讲,综合就是将VerilogHDL设计模型(一般为系统级和算法级的行为描述)转变为能用硬件电路实现的基本逻辑单元的连接(RTL级或门级网表)的过程。可综合Verilog是一个VerilogHDL的子集,对于不同的综合工具可综合子集一般并不完全相同。,Spring 2010,可综合VerilogHDL基础,Slide 5,2.1.2 词法及数据类型,标识符任意一组字母、数字、$符号和_(下划线)符号的组合,第一个字符必须是字母或者下划线。特别注意标识符区分大小写!逻辑值体系0 逻辑01 逻辑1z / Z 高阻抗 或 无关值(casex与casez语句)x / X 无关值 或 不定值,Spring 2010,可综合VerilogHDL基础,Slide 6,2.1.2 词法及数据类型,变量的数据类型网线数据类型:wire wor wand tri supply0 supply1wire 一般连线,最常用wor和wand实现多驱动源驱动同一根网线tri与wire综合效果相同supply0固定连接0电平,supply1固定连接1电平寄存器数据类型:reg integerreg 寄存器integer 最大32位整数,寄存器,用二进制补码形式表示,Spring 2010,可综合VerilogHDL基础,Slide 7,2.1.2 词法及数据类型,变量的定义格式:VarType msb : lsb var1, var2, , varN;变量数组(存储器):varType msb : lsb varArrayM : 0;示例:wire 7:0 databus;signed reg 15:0 cnt1, cnt2;reg 31:0 mem1023:0;,Spring 2010,可综合VerilogHDL基础,Slide 8,2.1.2 词法及数据类型,可综合的常量:整型常量简单的十进制表示:解释为有符号数,综合时用32位二进制补码形式表示30 32位有符号数-2 二进制补码形式的32位有符号数基数格式表示:basenum2b102位无符号数2-6d46位无符号数60-8h6a8位无符号数150-8sh558为有符号数-85,Spring 2010,可综合VerilogHDL基础,Slide 9,2.1.2 词法及数据类型,可综合的常量:整型常量含x和z的常量:二进制表示中,一个x或z代表一个二进制位;八进制和十六进制表示中,它们分别代表3或4个二进制位。4b1x0z16ha5zz8dz没有位宽说明时,数值默认为32位, 赋值时:目标字长小于原字长:高位丢失;目标字长大于源字长:源值为无符号数时高位填充0;为有符号数高位填充符号;源值最高位为x或z时,高位填充x或z。,Spring 2010,可综合VerilogHDL基础,Slide 10,2.1.2 词法及数据类型,参数参数是命名常量。由于不容许指定参数的位宽,所以参数的位宽与其对应的常量的位宽相同。parameter RED=-1,GREEN=2;RED和GREEN是两个32位有符号常量parameter READY=3b010,BUSY=3b001;READY和BUSY是2个位宽为3的参数。,Spring 2010,可综合VerilogHDL基础,Slide 11,2.1.3 值保持器的硬件建模,硬件中有3种基本的值保持器:连线触发器(边沿触发的存储元件)锁存器(电平敏感的存储元件)网线类型的变量被综合成硬件中的连线寄存器类型则根据上下文环境来确定综合成连线或者触发器或者锁存器。,Spring 2010,可综合VerilogHDL基础,Slide 12,2.1.3 值保持器的硬件建模,仅做临时变量的寄存器变量综合成为连线wire Acr,Bar,Fra;reg Trq,Sqp; /always(Bar or Acr or Fra)begin Trq = Bar end,Spring 2010,可综合VerilogHDL基础,Slide 13,2.1.3 值保持器的硬件建模,分支语句中未赋值综合成锁存器wire Sat,Ant;reg Fox,Sout;always(Sat or Ant)begin if (!Sat) Fox = Ant; Sout = !Fox; end,Spring 2010,可综合VerilogHDL基础,Slide 14,2.2 从Verilog到逻辑,2.2.1 可综合Verilog基本结构2.2.2 赋值语句2.2.3 运算符2.2.4 控制语句2.2.5 函数与任务2.2.6 结构建模与参数化设计,Spring 2010,可综合VerilogHDL基础,Slide 15,2.2.1 Verilog基本结构,模块模块是Verilog的基本单位,规模可大可小,用于描述一个具体的功能。可被实例化,可嵌套。格式:module 模块名(端口1, 端口2, , 端口n);端口类型说明( 端口n)端口数据类型说明(同变量定义)参数定义内部逻辑endmodule,Spring 2010,可综合VerilogHDL基础,Slide 16,2.2.1 Verilog基本结构,模块,module NAND2(a, b, y);input a, b;output y;wire a, b, y;assign y = (a endmodule,端口默认为wire,可省module NAND2(a, b, y);input a, b;output y; assign y = (a endmodule,端口说明和数据类型说明可同时module NAND2(a, b, y);input wire a, b;output wire y; assign y = (a endmodule,端口列表和说明可同时module NAND2(input a, b,output y); assign y = (a endmodule,Spring 2010,可综合VerilogHDL基础,Slide 17,2.2.1 Verilog基本结构,数据流描述和行为级描述数据流描述:赋值、assign语句行为级描述:always语句Always语句格式always(敏感列表/时钟)beginend敏感列表组合逻辑,时钟时序逻辑。由敏感之列表指定的事件或时钟触发其内部逻辑执行。,Spring 2010,可综合VerilogHDL基础,Slide 18,2.2.1 Verilog基本结构,数据流描述和行为级描述,数据流描述:module NAND2(a, b, y);input a, b;output y; assign y = (a endmodule,行为级描述:module NAND2(a, b, y);input a, b;output reg y; always(a or b)y=(aendmodule,行为级描述,敏感值列表的简化module NAND2(a, b, y);input a, b;output reg y; always(*)y=(aendmodule,不完整的敏感值列表可能会综合出非预想的结果,应杜绝。,Spring 2010,可综合VerilogHDL基础,Slide 19,2.2.2 赋值语句,赋值语句module Cont(Sin,Sout); input Sin; output Sout; assign Sout=Sin;/wire Sout=Sin;endmodule,Spring 2010,可综合VerilogHDL基础,Slide 20,2.2.2 赋值语句,两种过程赋值语句阻塞式过程赋值(顺序赋值)非阻塞式过程赋值(同时赋值)过程赋值的对象会综合成连线、触发器或者存储器,这取决于赋值语句的上下文环境。一般:组合逻辑用阻塞;时序逻辑用非阻塞。赋值限制:延迟控制被忽略对同一个赋值对象不能既使用阻塞式赋值,又使用非阻塞式赋值。,Spring 2010,可综合VerilogHDL基础,Slide 21,2.2.2 赋值语句,阻塞式赋值语句module Blocking(Preset, Count); input 1:0 Preset; output 1:0 Count; reg 1:0 Count; always (Preset) Count = Preset + 1;endmodule,Spring 2010,可综合VerilogHDL基础,Slide 22,2.2.2 赋值语句,非阻塞式赋值语句module NonBlocking(RegA, Mask, RegB); input 1:0 RegA,Mask; output 1:0 RegB; reg 1:0 RegB; always (RegA or Mask) RegB 、=、=、!=integer被解释成补码形式的有符号数。结果为一位二进制,真为1,假为0。module LessThan(A,B,ZU,ZS); input 31:0 A,B; output ZU,ZS; reg ZU,ZS; integer AInt,BInt; always(A or B) begin AInt = A; BInt = B; ZS = (AIntBInt); ZU = (A 移位空出的各位均补0。module Shift(MemDataReg,Amount,InstrReg);input 2:0 MemDataReg;input 1:0 Amount;output 2:0 InstrReg;assign InstrReg = (MemDataReg Amount);Endmodule带符号移位算符:左移左移空出的位补零,符号位不变右移空出的位补符号位无符号数没有符号位,Spring 2010,可综合VerilogHDL基础,Slide 28, 选拼算符,位选取算符: ;位拼接算符: 常量下标:module ConstantIndex(A,C,Reg_File,ZCat);input 3:0 A,C;input 3:0 Reg_File;output 3:0 ZCat;assign ZCat3:1=A2,C3:2;assign ZCat0=Reg_File3;endmodule,Spring 2010,可综合VerilogHDL基础,Slide 29, 选拼算符,表达式中的非常量下标:module NonComputeRight(Data,Index,Dout);input 3:0 Data;input 1:0 Index;output Dout;assign Dout=DataIndex;endmodule,Spring 2010,可综合VerilogHDL基础,Slide 30, 缩减算符,缩减算符: &、|、&、|、单目算符,操作数从右第1位开始一直计算至左最高位。&:1位为0结果为0;|:1位为1结果为1;:奇数个位为1结果为1;&: 1位为0结果为1;|: 1位为1结果为0;:奇数个位为1结果为0;,Spring 2010,可综合VerilogHDL基础,Slide 31, 缩减算符,缩减算符举例:module Reduction(A,Y1,Y2,Y3,Y4,Y5,Y6); input 3:0 A; output Y1,Y2,Y3,Y4,Y5,Y6; /assume A=4b1011; wire Y1=endmodule,Spring 2010,可综合VerilogHDL基础,Slide 32, 条件算符,条件算符:条件?表达式1:表达式2如果条件为真,则选择表达式1,否则选择表达式2。module ThreeStateGate(IN,EN,Y);input IN,EN;output Y;assign Y=EN?IN:1bz;endmodule,Spring 2010,可综合VerilogHDL基础,Slide 33,2.2.4 控制语句, always语句 if语句 case语句/casez/casex 循环语句,Spring 2010,可综合VerilogHDL基础,Slide 34, always语句,always(敏感事件表)always语句用于电路过程行为的建模。跟在符号之后用( )括起来的表称为事件表。对于组合逻辑,always语句中读取的变量都必须出现在事件表中,变量间一般用or连接。对于时序逻辑,always语句的事件表中通常为同步时钟信号:上升沿 posedge 或者 下降沿 negedge,Spring 2010,可综合VerilogHDL基础,Slide 35, always语句,D触发器:module DFlipFlop(Clk,CurrentState,NextState);input Clk,CurrentState;output NextState;reg NextState;always(negedge Clk)NextState=0;J=J-1) if(Address=J) LineJ=1b1; else LineJ=1b0;endmodule,Spring 2010,可综合VerilogHDL基础,Slide 52,2.2.5 函数与任务, 函数 任务,Spring 2010,可综合VerilogHDL基础,Slide 53, 函数,函数调用表达的是组合逻辑,不可包含always语句。函数调用是通过把被调用的函数直接插入调用代码中这种展开方式来实现综合的。在函数内局部声明的任何变量都被当作纯粹的临时量来处理,这样的变量会被综合成连线。但函数内不能有wire型态的数据声明。函数调用只能限于某个模块内。函数必须包含至少一个以上的input信号,不容许有输出信号。函数至多只有一个返回值。函数可以再调用函数。,Spring 2010,可综合VerilogHDL基础,Slide 54, 函数,函数的定义:function ; 行为语句;endfunction函数的调用: (,);,Spring 2010,可综合VerilogHDL基础,Slide 55, 函数,函数举例module FunctionCall(XBC,DataIn); input 3:0 DataIn; output XBC; function 1:0 CountOnes; input 3:0 A; integer K; begin CountOnes=0; for(K=0;K2;endmodule,Spring 2010,可综合VerilogHDL基础,Slide 56, 任务,任务调用既可以表达组合逻辑,也可以表达时序逻辑,这取决于上下文环境。但任务中不能含有always块。任务调用是通过把被调用的任务直接插入调用代码中这种展开方式来实现综合的。任务内不能有wire型态的数据声明。任务调用只能限于某个模块内。任务可以再调用任务或者函数。任务可以有零个或者多个输入或者输出。任务可以直接访问模块内的reg变量。,Spring 2010,可综合VerilogHDL基础,Slide 57, 任务,任务的定义:task ; endtask任务的调用: (,);,Spring 2010,可综合VerilogHDL基础,Slide 58, 任务,任务举例:module SynTask(ByteIn,Clock,ByteOut); input 7:0 ByteIn; input Clock; output 7:0 ByteOut; task ReverseByte; input 7:0 A; output 7:0 Z; integer K; begin for(K=7;K=0;K=K-1) ZK=A7-K; end endtask always(negedge Clock) ReverseByte(ByteIn,ByteOut);endmodule,Spring 2010,可综合VerilogHDL基础,Slide 59,2.2.6 结构建模与参数化设计, 门级建模 模块实例化语句 参数化设计,Spring 2010,可综合VerilogHDL基础,Slide 60, 门级建模,模型中可以使用逻辑门实例化语句得到逻辑门基本原件的实例。能够综合的逻辑门基本元件有:and、nandor、nornotxor、xnorbufbufif0、 bufif1、notif0、notif1,Spring 2010,可综合VerilogHDL基础,Slide 61, 门级建模,门级建模实例:module GateLevel(A,B,Ctrl,Zbus); input A,B,Ctrl; output Zbus; and A1(AndOut,A,B); or O1(OrOut,A,B); bufif0 B1(Zbus,AndOut,Ctrl); bufif0 B2(Zbus,OrOut,!Ctrl);endmodule,Spring 2010,可综合VerilogHDL基础,Slide 62, 模块实例化语句,模块调用的方法之一。综合系统把模块实例视作黑盒,如同门级一样的基本元件。模块实例化格式:ModuleName Instance1(Port1, , PortN), , InstanceN();,模块调用:module PreDefMulRed(OpdA,OpdB,ReducedResult); input 1:0 OpdA,OpdB; output ReducedResult; wire 3:0 Result; Multiply M1(OpdA,OpdB,Result); assign ReducedResult=endmodule,模

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论