电子系统设计Verilog语言基础.ppt
《电子系统设计Verilog语言基础.ppt》由会员分享,可在线阅读,更多相关《电子系统设计Verilog语言基础.ppt(85页珍藏版)》请在三一文库上搜索。
1、电子系统设计第二讲 Verilog HDL语言基础,主要内容,HDL概述 HDL发展史 行为描述 vs. 结构描述 Verilog HDL基本要素 基本Verilog HDL设计 组合逻辑电路单元设计范例 时序逻辑电路单元设计范例 硬件描述语言设计规范 ISE使用入门 课程内容回顾,设计示例,例:用基本门电路/触发器实现下图所示的状态图 例:用通用中规模集成电路实现下图所示的状态图,数字电路课程设计流程回顾,组合逻辑设计流程,时序逻辑设计流程,中小规模集成电路实现设计示例,编码器/译码器设计示例,8-3编码器 (Verilog HDL设计),3-8译码器 (电路图设计),41MUX设计示例,4
2、1MUX (VHDL设计),41MUX (电路图设计),HDL发展史,HDL:Hardware Description Language 原始HDL: 如ABEL等 仅是对电路连接的简单文字描述 主流HDL: 如VHDL、Verilog HDL等 在结构描述能力基础上具备行为描述能力 可面向设计以外综合、仿真等应用 未来HDL: 如System C等 对大型系统设计、模块化设计等支持度更优,ABEL语言程序段范例,AHDL语言程序段范例,VHDL语言程序段范例,Verilog HDL语言程序段范例,HDL设计方法,行为描述 由输入/输出响应关系描述 A component is describ
3、ed by its input/output response 结构描述 由低等级的元件/基本单元的连接关系描述 A component is described by interconnecting lower-level components/ primitives,行为描述设计方法示意,只有电路的功能性描述,没有结构描述 没有具体的硬件意图 目的是综合与仿真,结构描述设计方法示意,电路的功能性和结构 涉及具体硬件 目的是综合,从HDL到电路实现,编译 HDL语言正确性、可综合性检查 综合 形成对应于PLD器件内部逻辑电路资源的解释,包括布局布线等 仿真 形成针对上述电路解释的性能表现 下
4、载 按照流文件(Stream)格式要求植入PLD,Verilog HDL发展史,Verilog HDL语言最初于1983年由Gateway Design Automation (GDA) 公司为其模拟器产品开发的硬件建模语言 Cadence在1989年收购GDA后,Verilog HDL语言于1990年正式对外发布 Open Verilog International ( OVI )成立,以促进Verilog语言规范的发展 1993年,OVI推出了2.0版本 Verilog 语言于1995年成为IEEE标准,称为IEEE Std 1364-1995,2001年更新了标准,Verilog HDL
5、与其他HDL的差异,与ABEL、AHDL等语言相比 上述语言多应用逻辑等式来描述逻辑功能,侧重于结构描述方法 Verilog HDL适合算法级、寄存器传输级(RTL)、门级、版图级等各类设计描述应用 与VHDL语言相比 两者都具备良好的行为描述能力 Verilog HDL在描述硬件单元的结构时更简单易读,相比较而言,VHDL的描述长度是Verilog HDL的两倍,Verilog HDL与PLD设计,PLD设计是Verilog HDL的一大应用 PLD设计仅支持Verilog HDL的一个子集 本课程后续只学习和介绍PLD设计中支持的Verilog HDL,Verilog HDL基本要素,注意
6、点: 大小写敏感 所有关键词须小写 空格用于增加可读性 分号是语句终结符 单行注释:/ 多行注释:/* */ 时间规范用于仿真,Verilog HDL基本要素图,端口,端口列表 列出所有端口名称 端口类型 input 输入端口 output 输出端口 inout 双向端口 端口声明 ;,例: module hello_world(a,b,c,d,e); input a, b, d; output c, e; assign c = a endmodule,数据类型(Data Types),常量 参数(parameter) 变量 线网型(nets type) wire型最常用 寄存器型(regis
7、ter type) 标量 向量 数组,变量,线网型 用关键词wire等声明 相当于硬件电路里的物理连接,特点是输出值紧跟输入值变化 例:wire7:0 in, out; assign out=in;,寄存器型 用reg或integer申明 具有保持作用的元件 注:不表示必将综合成物理(硬件)寄存器! 在过程语句(always, initial)中赋值 integer是含符号整数型变量,*存储器,二维寄存器数组 不能是线网型(Net) 例如: reg31:0 mem 0:1023; / 1k 32 reg31:0 instr; instr = mem2; 注意: 不允许对存储器进行双索引操作 i
8、nstr = mem27:0 / 非法!,常量,parameter可用来定义常量 例:parameter size=8; reg size-1:0 a, b; 常量的正确使用在高级编程和大型程序设计中很重要,数字 (Numbers) (1),sized, unsized: sized: 3b010 / 3位二进制数字,值为010 unsized: 默认为十进制; 默认为32-bit. 进制 十进制 (d 或 D) 十六进制 (h 或 H) 二进制(b 或 B) 八进制 (o 或 O),数字 (Numbers) (2),负数在前加负号 例: -8d3 特殊数符 _ (下划线):增加可读性 x或X
9、 (未知数) z或Z (高阻) 若定义的位宽比实际位数长 如果高位是0, x, z,高位分别补0, x, z; 如果高位是1,左边补0.,运算符 (Operators),1. 算术运算符(Arithmetic) + 加 - 减 * 乘 / 除 % 取模,2. 逻辑运算符 (Logical) & 逻辑与 | 逻辑或 ! 逻辑非,运算符 (Operators),3. 位运算符 (Bitwise) 按位取反 & 按位与 | 按位或 按位异或 , 按位同或,4.关系运算 (Relational) 大于 = 大于或等于 注: =也用于表示一种赋值操作,运算符 (Operators),5.等价运算(Equ
10、ality) = 等于 != 不等于 = 全等 != 不全等,6.缩位运算(Reduction) & 与 & 与非 | 或 | 或非 异或 , 同或,运算符 (Operators),7.移位(Shift) 左移 右移 8. 条件(Conditional) ?:,9. 位拼接(Concatenation) ,运算符优先级,缺省操作符优先级 +,-,!, (单目操作符) *,/,% +,- (双目操作符) ,= =,!=,=,!= &,& , | & | ?: ()可用于调整优先级,高优先级,低优先级,行为级建模 (Behavior Modeling),过程语句 (initial, always)
11、 块语句 (begin-end, fork-join) 赋值语句 (assign, =, =) 条件语句 (if-else, case, casez, casex) 循环语句 (for, forever, repeat, while) 编译向导语句(define, include, ifdef, else, endif),过程语句,initial 用于仿真中的初始化,initial语句中的语句只执行一次 模板: initial begin 语句1; 语句2; ; end,always 块内的语句是不断重复执行的 模板: always () begin / 过程赋值 / if-else, cas
12、e 等选择 / while, repeat, for 循环 / task, function调用 end,敏感项说明,门控锁存器 module D_latch(D, Clk, Q); input D, Clk; output reg Q; always(D, Clk) if (Clk) Q = D; endmodule,D触发器 module flipflop(D, Clk, Q); input D, Clk; output reg Q; always(posedge Clk) Q = D; endmodule,赋值语句,连续赋值(Continuous) assign为连续赋值语句,主要对wi
13、re型变量赋值 例:2选1数据选择器 module MUX21_1(out, a, b, sel); input a, b, sel; output out; assign out=(sel=0)?a:b; endmodule,过程赋值(Procedural) 左边的赋值变量必须是reg型变量 阻塞(blocking) b = a; /该语句结束后立刻赋值 非阻塞(non-blocking) b = a; /整个过程块结束时才执行赋值,阻塞赋值,module example1(D, Clk, Q1, Q2) input D, Clk; output reg Q1, Q2; always(pos
14、edge Clk) begin Q1 = D; Q2 = Q1; end endmodule,always块内的语句按编写的先后次序顺序执行 若一个变量由阻塞语句赋值,则该新赋的值会被该块中后面的所有语句使用,非阻塞赋值,module example2(D, Clk, Q1, Q2) input D, Clk; output reg Q1, Q2; always(posedge Clk) begin Q1 = D; Q2 = Q1; end endmodule,非阻塞赋值可以使每条赋值语句的结果直到always块的结尾才能看到 阻塞赋值语句对语句顺序的依赖可能综合成错误的电路,建议用非阻塞赋值
15、语句描述时序电路,选择语句,if-else (解释条件语句) if else if else if else,case (分支语句) case(敏感表达式) 值1: 语句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;
16、 4b0010: SEG=7b1101101; 4b0011: SEG=7b1111001; 4b0100: SEG=7b0110011; 4b0101: SEG=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); inpu
17、t clk,reset,set; input d; output reg q,qb; always(posedge clk) begin if(!set end end endmodule,同步置位、复位的D触发器,流水灯设计案例,流水灯需求分析 通过8个单色LED实现流水灯显示效果 流水灯设计方案 用CASE语句实现 用移位寄存器实现 用有限状态机实现,流水灯设计之CASE语句实现,module lamp (rst, clk, state); input rst, clk; output7:0 state; reg7:0 state, next_state; parameter Idle =
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 系统 设计 Verilog 语言 基础
链接地址:https://www.31doc.com/p-2319612.html