当前位置:文档之家› Verilog入门

Verilog入门


第五章 Verilog 语言
例: module MUX_2(out, a, b, sel); output out; input a, b, sel; not U0(sel_, sel); and U1(a1, a, sel_), and U2(b1, b, sel); or U3(out, a1, a2); endmodule
例: wire net1; wand net2; tri [15:0] bus_in; wand [0:31] bus_a, bus_b; 当沒指定 net 是何种 type 时,Verilog 会以 default 值
来设定,default 为一位的 wire型
第五章 Verilog 语言
Verilog 语法与实例
第五章 Verilog 语言
• `define
`define <name> <macro_text> 例: `define ADD 3’h0 `define SUB 3’h1 .... case(opcode) `ADD:.... `SUB:..... end case • 例: `include “user_define_task.v” • `timescale 例: `timescale <time unit>/<time precision> `include
wand,triand 多重驱动时,具有线与特性的连线 trireg 具有电荷保持特性的连线 tri1 tri0 supply1 supply0 具有弱上拉电阻的连线 具有弱下拉电阻的连线 电源线,逻辑 1 地线,逻辑 0
第五章 Verilog 语言
Verilog 语法与实例
• 连线型变量声明:
<net type> <[msb:lsb]> <delay> <net name> <, <net name>>*;
第五章 Verilog 语言
Verilog概述
• Verilog 语言的描述风格
– 行为描述
描 述 复 杂 度 • 只对系统行为与功能进行描述,不涉及时序 电路实现,是一种高级语言描述的方法,有 很强的通用性
– 结构型描述
• 描述实体连接的结构形式,通过实例描述, 将verilog已定义的基本实例嵌入到语言中
第五章 Verilog 语言
例: `timescale 10ns / 1ps module MUX2(out, a, b, sel); output out; input a, b, sel; not #3 not1(sel_, sel); // delay 3个10ns ... endmodule
第五章 Verilog 语言
Verilog概述
• Verilog是在C语言的基础上发展起来的一种 硬件描述语言 • 由Gateway Automation 于1983年首创,并于 1995年成为IEEE标准,即IEEE standard 1364
第五章 Verilog 语言
Verilog概述
• 支持不同抽象层次的精确描述以及混合模拟,如 行为级、 RTL级、开关级等 • 设计、测试、模拟所用的语法都相同 • 较高层次的描述与具体工艺无关 • 提供了类似C语言的高级程序语句,如if-else, for, while, break, case,loop以及int等数据类型 • 提供了算术、逻辑、位操作等运算符 • 包含完整的组合逻辑元件,如and、or、xor等, 无需自行定义 • 支持元件门级延时和元件门级驱动强度(nmos, pmos)
module var_mux (out, a, b, sel); parameter width = 8, delay = 3; output [width-1:0] out; input [width-1:0] a, b; input sel; assign #delay out = sel ? a : b;
第五章 Verilog 语言
Verilog 语法与实例
• 数字表示:整数,实数 整数:+/- <位宽> ‘<基数符号> <数值>
<位宽>:指定整数的大小,以bit为单位。
<基数符号>:指定整数的基数,可以是b(binary)二进
制;o(octal)八进制;d(decimal)十进制;h(hex-
adecimal)十六进制。
第五章 Verilog 语言
可编程逻辑器件应用实践
孙涛 ise_sunt@
第五章 Verilog 语言
主要内容
• 目的:
– 通过具体实例讲解Verilog 的语法,快速掌握 Verilog的语法与结构
• 内容:
1. Verilog概述 2. Verilog HDL结构 3. Verilo :通过过程赋值语句赋值 • 电荷保持作用:在下一次赋值之前保持不变 • 对应硬件:触发器、锁存器
第五章 Verilog 语言
Verilog 语法与实例
连线类
Net Types wire, tri wor, trior Function 标准连线(default) 多重驱动时,具有线或特性的连线
第五章 Verilog 语言
Verilog概述
• 与C语言的联系与区别
项目 C Verilog
执行顺序
时序概念 语法限制
顺序执行
无延迟 灵活完善
并行执行
存在延迟 限制严格,需 要有数字电路 的知识
第五章 Verilog 语言
Verilog概述
• 抽象层次
– 系统级:C等高级语言描述 – 行为级:模块的功能描述 – RTL级:寄存器与组合电路的合成 – 逻辑门级:基本逻辑门的组合(and, or, nand) – 开关级:晶体管开关的组合(nmos, pmos)
endmodule
第五章 Verilog 语言
Verilog 语法与实例
• 模拟时间定标`timescale `timescale <计时单位>/<计时精度> 例:`timescale 1ns/100ps
– 合法的整数:1、10、100 – 合法时间单位:s、ms、µs、ns、ps、fs
not, and, or, xor, nor begin, end
第五章 Verilog 语言
Verilog 语法与实例
• 特殊字符: $,#,`
– $:以$开头的标识符代表系统命令 $time:返回目前的仿真时间 $display:显示出信号的值 $stop:停止仿真 –# not #3 not1(sel_, sel);// instance delay – ` `define,`include,`timescale
<数值>:指定整数的值。
第五章 Verilog 语言 整数:
17 //位宽, 基数符号不写会采用default值 (32bit十进制) 8’d32 //8-bit十进制值为32 8’h12 8’h1A 8’b0001_1100 /* ”_”无特別意义,只是为了方便二进制数易读*/ 8’o37 32’bx // ”x”表unknown 4’b0??? // ”?”表High impedance
– 数据流型描述
• 通过assign连续赋值实现组合逻辑功能的描 述
第五章 Verilog 语言
Verilog HDL结构
• Verilog HDL是由module模块组成,模块定义关键词 module 开始,到关键词 endmodule结束,每条Verilog语句以分号 “;”作为结束(块语句、编译向导、endmodule等除外)
module module_name(Port_list) 端口声明; 数据类型声明; 电路描述; endmodule
例:上升沿D触发器
module dff_pos(data,clk,q); input data,clk; //端口声明 output q; //端口声明 reg q; //数据类型声明 always @(posedge clk) q=data;//电路描述 endmodule
第五章 Verilog 语言
Verilog 语法与实例
• 基本词法定义
– 空白符 : 空格(space bar),TAB 键,return键。 – 注释 (Comment) : “//”或“/*, */”。
第五章 Verilog 语言
Verilog 语法与实例
/* 2-to-1 multiplexer; out = a when sel = 0;out = b when sel = 1; */ module MUX_2(out, a, b, sel); output out; input a, b, sel; //netlist not(sel_, sel); and(a1, a, sel_),(b1, b, sel); or(out, a1, a2); endmodule
– 连线类(Net):反映硬件电路的物理连接特 性的变量 – 寄存器类(Register):具有数据存储特性的 变量
第五章 Verilog 语言
Verilog 语法与实例
• 连线型与寄存器型区别:
– 连线型:
• • • • • 驱动方式(赋值方式): 连接到一个门或模块的输出端; 用assign赋值 电荷保持作用:没有电荷保持作用,未被驱动时将处于高阻态 对应硬件:物理信号连接
第五章 Verilog 语言
Verilog 语法与实例
• Verilog的四种逻辑状态: 0:逻辑零、逻辑非、低电平 1:逻辑1、逻辑真、高电平 x或X:不定态 z或Z:高阻态
第五章 Verilog 语言
Verilog 语法与实例
相关主题