电子系统设计Verilog语言基础课件.ppt

上传人(卖家):三亚风情 文档编号:3528416 上传时间:2022-09-12 格式:PPT 页数:85 大小:6.25MB
下载 相关 举报
电子系统设计Verilog语言基础课件.ppt_第1页
第1页 / 共85页
电子系统设计Verilog语言基础课件.ppt_第2页
第2页 / 共85页
电子系统设计Verilog语言基础课件.ppt_第3页
第3页 / 共85页
电子系统设计Verilog语言基础课件.ppt_第4页
第4页 / 共85页
电子系统设计Verilog语言基础课件.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

1、电子系统设计电子系统设计第二讲第二讲Verilog HDL语言基础语言基础主要内容主要内容l HDL概述概述nHDL发展史发展史n行为描述行为描述 vs.结构描述结构描述l Verilog HDL基本要素基本要素l 基本基本Verilog HDL设计设计n组合逻辑电路单元设计范例组合逻辑电路单元设计范例n时序逻辑电路单元设计范例时序逻辑电路单元设计范例l 硬件描述语言设计规范硬件描述语言设计规范l ISE使用入门使用入门l 课程内容回顾课程内容回顾设计示例设计示例例:用基本门电路例:用基本门电路/触发器实现下图所示的状态图触发器实现下图所示的状态图例:用通用中规模集成电路实现下图所示的状态图例

2、:用通用中规模集成电路实现下图所示的状态图0123456/0/1/0/0/0/1/0数字电路课程设计流程回顾数字电路课程设计流程回顾l 组合逻辑设计流程组合逻辑设计流程l 时序逻辑设计流程时序逻辑设计流程中小规模集成电路实现设计示例中小规模集成电路实现设计示例CCVCP0Q1Q2Q3QENCILDCR0D1D2D3D&CCV74161A2A1A001234567EN74151ZVCC编码器编码器/译码器设计示例译码器设计示例8-3编码器编码器(Verilog HDL设计)设计)3-8译码器译码器(电路图设计)(电路图设计)41MUX设计示例设计示例41MUX(VHDL设计)设计)41MUX(电

3、路图设计)(电路图设计)HDL发展史发展史l HDL:Hardware Description Languagel 原始原始HDL:n 如如ABEL等等n 仅是对电路连接的简单文字描述仅是对电路连接的简单文字描述l 主流主流HDL:n 如如VHDL、Verilog HDL等等n 在结构描述能力基础上具备行为描述能力在结构描述能力基础上具备行为描述能力n 可面向设计以外综合、仿真等应用可面向设计以外综合、仿真等应用l 未来未来HDL:n 如如System C等等n 对大型系统设计、模块化设计等支持度更优对大型系统设计、模块化设计等支持度更优ABEL语言程序段范例语言程序段范例AHDL语言程序段范

4、例语言程序段范例SUBDESIGN flip_flop(d,clk:input;q:output;)variable temp:dff;begintemp.d=d;temp.clk=clk;q=temp.q;end;I want a D-FlipflopSUBDESIGN flip_flop(d,clk:input;q:output;)variable temp:dff;begintemp.d=d;temp.clk=clk;q=temp.q;end;I want a D-FlipflopSUBDESIGN flip_flop(d,clk:input;q:output;)variable tem

5、p:dff;begintemp.d=d;temp.clk=clk;q=temp.q;end;I want a D-FlipflopVHDL语言程序段范例语言程序段范例Verilog HDL语言程序段范例语言程序段范例HDL设计方法设计方法l行为描述行为描述n 由输入由输入/输出响应关系描述输出响应关系描述n A component is described by its input/output responsel结构描述结构描述n 由低等级的元件由低等级的元件/基本单元的连接关系描述基本单元的连接关系描述n A component is described by interconnectin

6、g lower-level components/primitives行为描述设计方法示意行为描述设计方法示意l只有电路的功能性描述,没有结构描述只有电路的功能性描述,没有结构描述l没有具体的硬件意图没有具体的硬件意图l目的是综合与仿真目的是综合与仿真结构描述设计方法示意结构描述设计方法示意l电路的功能性和结构电路的功能性和结构l涉及具体硬件涉及具体硬件l目的是综合目的是综合从从HDL到电路实现到电路实现l编译编译n HDL语言正确性、可综合性检查语言正确性、可综合性检查l综合综合n 形成对应于形成对应于PLD器件内部逻辑电路资源的解释器件内部逻辑电路资源的解释,包括布局布线等,包括布局布线等

7、l仿真仿真n 形成针对上述电路解释的性能表现形成针对上述电路解释的性能表现l下载下载n 按照流文件(按照流文件(Stream)格式要求植入)格式要求植入PLDVerilog HDL发展史发展史lVerilog HDL语言最初于语言最初于1983年由年由Gateway Design Automation(GDA)公司为其模拟器产公司为其模拟器产品开发的硬件建模语言品开发的硬件建模语言lCadence在在1989年收购年收购GDA后,后,Verilog HDL语语言于言于1990年正式对外发布年正式对外发布lOpen Verilog International(OVI)成立,以促成立,以促进进Ve

8、rilog语言规范的发展语言规范的发展l1993年,年,OVI推出了推出了2.0版本版本lVerilog 语言于语言于2019年成为年成为IEEE标准,称为标准,称为IEEE Std 1364-2019,2019年更新了标准年更新了标准Verilog HDL与其他与其他HDL的差异的差异l与与ABEL、AHDL等语言相比等语言相比n上述语言多应用逻辑等式来描述逻辑功能,侧上述语言多应用逻辑等式来描述逻辑功能,侧重于结构描述方法重于结构描述方法nVerilog HDL适合算法级、寄存器传输级适合算法级、寄存器传输级(RTL)、门级、版图级等各类设计描述应用门级、版图级等各类设计描述应用l与与VH

9、DL语言相比语言相比n两者都具备良好的行为描述能力两者都具备良好的行为描述能力nVerilog HDL在描述硬件单元的结构时更简单易在描述硬件单元的结构时更简单易读,相比较而言,读,相比较而言,VHDL的描述长度是的描述长度是Verilog HDL的两倍的两倍Verilog HDL与与PLD设计设计l PLD设计是设计是Verilog HDL的一大应用的一大应用l PLD设计仅支持设计仅支持Verilog HDL的一个子集的一个子集l 本课程后续只学习和介绍本课程后续只学习和介绍PLD设计中支持设计中支持的的Verilog HDLVerilog HDL基本要素基本要素注意点:注意点:l 大小写

10、敏感大小写敏感l 所有关键词须小写所有关键词须小写l 空格用于增加可读性空格用于增加可读性l 分号是语句终结符分号是语句终结符l 单行注释:单行注释:/l 多行注释:多行注释:/*/l 时间规范用于仿真时间规范用于仿真Verilog HDL基本要素图基本要素图端口端口l 端口列表端口列表n列出所有端口名称列出所有端口名称l 端口类型端口类型ninput 输入端口输入端口noutput 输出端口输出端口ninout 双向端口双向端口l 端口声明端口声明n;例:例:module hello_world(a,b,c,d,e);input a,b,d;output c,e;assign c=a&b;a

11、ssign e=d;endmodule数据类型数据类型(Data Types)l常量常量n 参数(参数(parameter)l变量变量n 线网型(线网型(nets type)u wire型最常用型最常用n 寄存器型(寄存器型(register type)u 标量标量u 向量向量u 数组数组变量变量l 线网型线网型 n 用关键词用关键词wire等声明等声明n 相当于硬件电路里的物理相当于硬件电路里的物理连接,特点是输出值紧跟连接,特点是输出值紧跟输入值变化输入值变化例:例:wire7:0 in,out;assign out=in;l 寄存器型寄存器型 n 用用reg或或integer申明申明n

12、具有保持作用的元件具有保持作用的元件 注:不表示必将综合成物理注:不表示必将综合成物理(硬件)寄存器!(硬件)寄存器!n 在过程语句在过程语句(always,initial)中赋值中赋值n integer是含符号整数型变量是含符号整数型变量*存储器存储器l二维寄存器数组二维寄存器数组l不能是线网型(不能是线网型(Net)n例如:例如:reg31:0 mem 0:1023;/1k 32 reg31:0 instr;instr=mem2;l注意:注意:n不允许对存储器进行双索引操作不允许对存储器进行双索引操作instr=mem27:0 /非法!非法!常量常量l parameter可用来定义常量可用

13、来定义常量例:例:parameter size=8;reg size-1:0 a,b;l常量的正确使用在高级编程和大型程序设计常量的正确使用在高级编程和大型程序设计中很重要中很重要数字数字(Numbers)(1)lsized,unsized:nsized:3b010/3位二进制数字,值为位二进制数字,值为010nunsized:u 默认为十进制默认为十进制;u 默认为默认为32-bit.l进制进制n十进制十进制(d 或或 D)n十六进制十六进制(h 或或 H)n二进制二进制(b 或或 B)n八进制八进制(o 或或 O)数字数字(Numbers)(2)l负数负数在在前加负号前加负号n例:例:-8

14、d3 l特殊数符特殊数符n_(下划线下划线):增加可读性:增加可读性nx或或X(未知数未知数)nz或或Z(高阻高阻)l若定义的位宽比实际位数长若定义的位宽比实际位数长n如果高位是如果高位是0,x,z,高位分别补,高位分别补0,x,z;n如果高位是如果高位是1,左边补,左边补0.运算符运算符(Operators)l 1.算术运算符算术运算符(Arithmetic)+加加-减减*乘乘/除除%取模取模l 2.逻辑运算符逻辑运算符(Logical)&逻辑与逻辑与|逻辑或逻辑或!逻辑非逻辑非运算符运算符(Operators)l 3.位运算符位运算符(Bitwise)按位取反按位取反&按位与按位与|按位或

15、按位或按位异或按位异或,按位同或按位同或l 4.关系运算关系运算(Relational)小于小于大于大于=大于或等于大于或等于l 注注:左移左移右移右移l8.条件条件(Conditional)?:l9.位拼接位拼接(Concatenation)运算符优先级运算符优先级l 缺省操作符优先级缺省操作符优先级+,-,!,!,(单目操作符)(单目操作符)*,/,%+,-(双目操作符)(双目操作符),=,!=,=,!=&,&,|&|?:l()可用于调整优先级()可用于调整优先级高优先级高优先级低优先级低优先级行为级建模行为级建模(Behavior Modeling)l过程语句过程语句 (initial,

16、always)l块语句块语句(begin-end,fork-join)l赋值语句赋值语句(assign,=,=)l条件语句条件语句(if-else,case,casez,casex)l循环语句循环语句(for,forever,repeat,while)l编译向导语句编译向导语句(define,include,ifdef,else,endif)过程语句过程语句l initial 用于仿真中的用于仿真中的初始化,初始化,initial语句中的语语句中的语句只执行一次句只执行一次n 模板:模板:initial begin 语句语句1;语句语句2;endl always 块内的语句块内的语句是不断重复

17、执行的是不断重复执行的n 模板:模板:always()begin /过程赋值过程赋值 /if-else,case 等选择等选择 /while,repeat,for 循环循环 /task,function调用调用end敏感项说明敏感项说明l 门控锁存器门控锁存器module D_latch(D,Clk,Q);input D,Clk;output reg Q;always(D,Clk)if(Clk)Q=D;endmodulel D触发器触发器module flipflop(D,Clk,Q);input D,Clk;output reg Q;always(posedge Clk)Q=D;endmod

18、ule赋值语句赋值语句l 连续赋值连续赋值(Continuous)n assign为连续赋值语句为连续赋值语句,主要对,主要对wire型变量赋型变量赋值值n例:例:2选选1数据选择器数据选择器module MUX21_1(out,a,b,sel);input a,b,sel;output out;assign out=(sel=0)?a:b;endmodulel 过程赋值过程赋值(Procedural)n左边的赋值变量必须是左边的赋值变量必须是reg型变量型变量n阻塞阻塞(blocking)b=a;/该语句结束后立刻赋值该语句结束后立刻赋值n非阻塞非阻塞(non-blocking)b=a;/整

19、个过程块结束时才执整个过程块结束时才执行赋值行赋值阻塞赋值阻塞赋值module example1(D,Clk,Q1,Q2)input D,Clk;output reg Q1,Q2;always(posedge Clk)begin Q1=D;Q2=Q1;endendmodulel always块内的语句按编写的先后次序顺序执行块内的语句按编写的先后次序顺序执行l 若一个变量由阻塞语句赋值,则该新赋的值会被若一个变量由阻塞语句赋值,则该新赋的值会被该块中后面的所有语句使用该块中后面的所有语句使用非阻塞赋值非阻塞赋值module example2(D,Clk,Q1,Q2)input D,Clk;ou

20、tput reg Q1,Q2;always(posedge Clk)begin Q1=D;Q2=Q1;endendmodulel 非阻塞赋值可以使每条赋值语句的结果直到非阻塞赋值可以使每条赋值语句的结果直到always块的结尾才能看到块的结尾才能看到l 阻塞赋值语句对语句顺序的依赖可能综合成错误阻塞赋值语句对语句顺序的依赖可能综合成错误的电路,建议用非阻塞赋值语句描述时序电路的电路,建议用非阻塞赋值语句描述时序电路选择语句选择语句l if-else(解释条件语句)(解释条件语句)ifelse ifelse ifelsel case(分支语句)(分支语句)case(敏感表达式敏感表达式)值值1:

21、语句语句1;值值2:语句:语句2;值值n:语句语句n;default:语句语句n+1;endcase基本基本Verilog HDL设计范例设计范例组合逻辑电路组合逻辑电路/七段码译码器;七段码译码器;module converter(DB,SEG);input3:0 DB;output6:0 SEG;reg6:0 SEG;always (DB)begin case(DB)4b0000:SEG=7b1111110;4b0001:SEG=7b0110000;4b0010:SEG=7b1101101;4b0011:SEG=7b1111001;4b0100:SEG=7b0110011;4b0101:S

22、EG=7b1011011;4b0110:SEG=7b1011111;4b0111:SEG=7b1110000;4b1000:SEG=7b1111111;4b1001:SEG=7b1111011;default:SEG=7b0000000;endcase end endmodule 基本基本Verilog HDL设计范例设计范例时序逻辑电路时序逻辑电路module sync_rsddf(clk,reset,set,d,q,qb);input clk,reset,set;input d;output reg q,qb;always(posedge clk)begin if(!set&reset)b

23、egin q=1;qb=0;end else if(set&!reset)begin q=0;qb=1;end else begin q=d;qb=d;end end endmodule 同步置位、复位的同步置位、复位的D触发器触发器 流水灯设计案例流水灯设计案例l 流水灯需求分析流水灯需求分析n通过通过8个单色个单色LED实现实现流水灯显示效果流水灯显示效果l 流水灯设计方案流水灯设计方案n用用CASE语句实现语句实现n用移位寄存器实现用移位寄存器实现n用有限状态机实现用有限状态机实现状态状态LED显示要求显示要求Idlestate0 state1state2state3state4stat

24、e5state6state7流水灯设计之流水灯设计之CASE语句实现语句实现module lamp(rst,clk,state);inputrst,clk;output7:0state;reg7:0state,next_state;parameter Idle=8b11111111,state0=8b11111110,state1=8b11111100,state2=8b11111000,state3=8b11110000,state4=8b11100000,state5=8b11000000,state6=8b10000000,state7=8b00000000;always(posedge

25、 clk or negedge rst)beginif(!rst)state=Idle;elsestate=next_state;endalways(state)begincase(state)Idle:next_state=state0;state0:next_state=state1;state1:next_state=state2;state2:next_state=state3;state3:next_state=state4;state4:next_state=state5;state5:next_state=state6;state6:next_state=state7;state

26、7:next_state=Idle;default:next_state=Idle;endcaseendendmoduleQuestion:如果流水灯效果要求为双向移动,本程序如何修改?流水灯波形流水灯波形l 注注1:CPLD实验板上的实验板上的LED当电平为当电平为0时亮,为时亮,为1时灭;时灭;l 注注2:实际的时钟需要适当降低到人眼可以识别的变化范围内。:实际的时钟需要适当降低到人眼可以识别的变化范围内。流水灯设计之移位寄存器实现流水灯设计之移位寄存器实现module lamp(rst,clk,state);inputrst,clk;output7:0state;reg7:0state,

27、next_state;always(posedge clk or negedge rst)beginif(!rst)state=8b11111111;elsestate=next_state;endalways(state)beginif(state=8b000000000)next_state=8b11111111;elsenext_state=state1;endendmoduleQuestions:l如果流水灯效果要求为双向移动,本程序如何修改?l如果流水灯跳变节奏需要有变化,本程序如何修改?1.本程序原设计本身是否有不足?有限状态机(有限状态机(FSM)设计基础)设计基础lFSM分米勒

28、型分米勒型(Mealy)和摩尔型和摩尔型(Moore)两种两种,前者的,前者的输出输出取决于机器状态和输入,后者取决于机器状态和输入,后者的输出与输入无关。的输出与输入无关。lFSM的设计方法有两类:一种是将状态的转的设计方法有两类:一种是将状态的转移和状态的操作写在同一个模块中,另一个移和状态的操作写在同一个模块中,另一个是是将状态转移单独写成一个模块将状态转移单独写成一个模块。后者利于。后者利于综合器优化代码、布局布线。综合器优化代码、布局布线。Moore型型FSMalways(w,state)begincase(state)/Define state circleA:if(w)next_

29、state=B;elsenext_state=A;B:if(w)next_state=C;elsenext_state=A;C:if(w)next_state=C;elsenext_state=A;default:next_state=A;endcasez=(state=C);/Define outputend/Define the sequential blockalways(posedge clk or negedge rst)beginif(!rst)state=A;elsestate=next_state;endendmoduleA为初始状态;为初始状态;w为输入;为输入;z为输出为输

30、出module simple(clk,rst,w,z);input clk,rst,w;outputz;regz;reg2:1 state,next_state;parameter2:1 A=2b00,B=2b01,C=2b10;Moore型型FSM波形图波形图Mealy型型FSM/Define the next state and output combination circuitsalways(w,state)begin case(state)A:if(w)begin z=0;next_state=B;end else begin z=0;next_state=A;endB:if(w)b

31、egin z=1;next_state=B;end else begin z=0;next_state=A;endendcaseendendmodulemodule mealy(clk,rst,w,z);inputclk,rst,w;outputz;regz;regstate,next_state;parameter A=1b0,B=1b1;/Define the sequential blockalways(posedge clk or negedge rst)begin if(!rst)state=A;else state=next_state;endMealy型型FSM波形图波形图流水灯

32、设计之有限状态机实现流水灯设计之有限状态机实现module lamp(rst,clk,w,state);inputrst,clk,w;output7:0 state;reg7:0state,next_state;parameter Idle=8b11111111,state0=8b11111110,state1=8b11111100,state2=8b11111000,state3=8b11110000,state4=8b11100000,state5=8b11000000,state6=8b10000000,state7=8b00000000;always(posedge clk or ne

33、gedge rst)beginif(!rst)state=Idle;elsestate=next_state;endalways(state or w)begincase(state)Idle:beginif(w)next_state=state0;else next_state=Idle;endstate0:beginif(w)next_state=state1;elsenext_state=state0;endstate1:state2:state7:default:next_state。ISE 14.7 界面界面利用向导,建立一个新项目利用向导,建立一个新项目(1)点击上图界面的点击上图

34、界面的new project.启动启动项目向导。项目向导。Step1:如右图,:如右图,分别指定创建工程分别指定创建工程的路径,工程名和的路径,工程名和顶层文件名。顶层文件名。Step2:点击:点击 Next按钮按钮,进入页面三,完成器件,进入页面三,完成器件选择。器件的选择是和实选择。器件的选择是和实验平台的硬件相关的,根验平台的硬件相关的,根据我们的据我们的Basys2实验开发实验开发板,它使用的是板,它使用的是Spartan3E-XC3S100E-CP132 的器件,找到相应的器件,找到相应的器件,如图所示的器件,如图所示:利用向导,建立一个新项目利用向导,建立一个新项目(2)Step3

35、:后面两步:后面两步分别是对分别是对EDA工工具的设定和工程具的设定和工程综述,都不作任综述,都不作任何操作。点击何操作。点击Finish完成工程创完成工程创建建利用向导,建立一个新项目利用向导,建立一个新项目(3)新建一个新建一个Verilog HDL文件文件l根据右图,向工根据右图,向工程添加程添加Verilog HDL文件。文件。新建一个新建一个Verilog HDL文件文件l如右图,文件类如右图,文件类型选择型选择Verilog Module,输入文,输入文件名称,选择文件件名称,选择文件保存路径,点击保存路径,点击Next。新建一个新建一个Verilog HDL文件文件l进入端口定义

36、模进入端口定义模块,可直接点击块,可直接点击Next(端口定义(端口定义可以在程序中进行可以在程序中进行描述)。描述)。新建一个新建一个Verilog HDL文件文件l进入文件信息总进入文件信息总结页面,点击结页面,点击Finish完成完成Verilog HDL文件的添加。文件的添加。程序输入与编译程序输入与编译l程序输入程序输入n在用户区在用户区Verilog HDL文件窗口中输入源程序,文件窗口中输入源程序,保存时保存时文件名与实体名保持一致文件名与实体名保持一致。l对源程序进行语法检查和编译对源程序进行语法检查和编译n使用快捷按钮使用快捷按钮 ,对以上程序进行,对以上程序进行分析综合,检

37、查语法规范;分析综合,检查语法规范;n如果没有问题则编译整个程序,使用如果没有问题则编译整个程序,使用 。n如果出现问题,则对源程序进行修改,直至没如果出现问题,则对源程序进行修改,直至没有问题为止。有问题为止。ISE 14.7 中的仿真包括中的仿真包括功能仿真功能仿真和和时序仿真时序仿真;ISE自带仿真工具自带仿真工具写好功能模块和写好功能模块和testbench文件。文件。功能仿真选择功能仿真选择Source下下的的Behavioral仿真仿真时序仿真时序仿真时序仿真选择时序仿真选择Source下的下的Post-Route 双击双击Simulate Post-Place&Rout Mode

38、运行运行时序仿真时序仿真仿真仿真*.bit 文件的生成文件的生成 Step 1:分配管脚;Step 2:编译下载下载l(1)JTAG下载,保存了编写好的UCF文件后,我们将板子接上电源和数据线,如图先点击工程文件,再双击Configure Target Device中的Generate Target,如下图所示:下载下载l 弹出了ISE的iMPACT工具,双击Boundary Scan。如下图所示:下载下载l 出现如下页面,点击Cancel:下载下载l 出现如下页面,选择相应的.bit文件:下载下载l 出现如下页面,点击No:下载下载l 右击绿色器件,点击Program:下载下载l 出现如下界

39、面,点击OK:下载下载l 出现如下界面,表示下载成功:课程内容回顾课程内容回顾l为什么为什么PLD不支持全集不支持全集Verilog HDL语言?语言?lVerilog HDL的模块内有哪些必须及可选的的模块内有哪些必须及可选的语言要素?语言要素?l4d017的二进制真实值是多少?的二进制真实值是多少?lalways语句有敏感项列表是否一定是时序逻语句有敏感项列表是否一定是时序逻辑电路?辑电路?l掌握基本组合逻辑(基本运算电路、编掌握基本组合逻辑(基本运算电路、编/译译码器等)和基本时序电路(计数器、状态机码器等)和基本时序电路(计数器、状态机等)的等)的Verilog HDL设计。设计。三态门三态门/双向端口调用双向端口调用三态门三态门/双向端口调用双向端口调用如何理解该波形含义?如何理解该波形含义?注意注意OEOE使能信号或使能信号或Tri_enTri_en三态三态使能信号的时序关系,建议使使能信号的时序关系,建议使用用MegaWizardMegaWizard中的三态门函数。中的三态门函数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(电子系统设计Verilog语言基础课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|