Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Verilog

Similar presentations


Presentation on theme: "Introduction to Verilog"— Presentation transcript:

1 Introduction to Verilog
ACM 11’ 陈爽

2 History Creator: Phil Moorby -> GateWay Design Automation
Time: 1983 Publication: by Cadence IEEE standard of Verilog HDL, 1995 First modern HDL

3 Key Words EDA HDL C语言 结构化 过程化

4 Hello World Module main; initial begin $display(“Hello world!”);
$finish; end endmodule

5 Content 模块 数据类型 语句 预处理&编译 抽象级别 与C比较

6 模块的结构 模块Block:Verilog的基本设计单元(类比函数) module block(a,b,c,d) Input a,b;
Output c,d; Assign c=a|b; Assign d=a&b; endmodule

7 模块内容 I/O说明 内部信号说明 功能定义 Input 端口名1,端口名2… Output 端口名1,端口名2… 变量定义&说明
assign声明 用实例元件 and and_test(q,a,b) 调用与门 用always块

8 Attention E.g.异步清除端的D触发器 Always @(posedge clk or posedge clr) Begin
If (clr) q<=0; Else if (en) q<=d End 3种功能地位相等,同时执行。Always内部顺序执行

9 数据类型 共19种 数字 <位宽><进制><数字> 8’b , 位宽为8的二进制 x值(不定)和z值(高阻);负数;下划线(用来隔开数) 常量parameter Parameter e=25,f=5.7; Parameter ave=(e+f)/2; 常数表达式

10 常量 一个模块中改另一个模块中的参数要用defparam

11 数据类型 变量 Wire [n-1:0] 数据名1,数据名2… 数据名i Reg [n-1:0],寄存器储存
// i条总线,每条总线内有n条线路 E.g. wire[7:0] b; 定义了一个八位的wire型数据 输入输出信号的缺省类型,以assign制定的组合逻辑信号 Reg [n-1:0],寄存器储存 Memory型:数组(verilog里没有多维数组) Reg[7:0] memo[255:0] 一个拥有256个8位寄存器变量的存储器

12 运算符 基本的算术运算符 位运算符 逻辑运算符 关系运算符 等式运算符 移位运算符 位拼接运算符 缩减运算符

13 位拼接运算符 {信号1的某几位,信号2的某几位…} {a, b[3:0], w, 3’b101} 还可用重复法简化
{4{w}}={w,w,w,w} 加法器中wire[3:0] a,b; {jin,sum}=a+b;

14 赋值语句 非阻塞Non Blocking赋值 <= 阻塞赋值 = Begin Begin Begin q3=q2; q1<=d;
end 时序和混合逻辑用非阻塞;组合逻辑用阻塞 Begin q3=q2; q2=q1; q1=d; end Begin q1<=d; q2<=q1; q3<=q2; end

15 块语句 顺序块:语句依次执行 并行块:块内语句同时执行 fork 语句1; 语句2; … 语句n; Join
Attention:块和语句的起始时间和结束时间

16 Parameter d=50; Reg[7:0] r; Begin Fork #250 -> end_wave;
#d r=‘h35; #d r=‘hE2; #d r=‘h00; #d r=‘hF7; #d -> end_wave; end Fork #250 -> end_wave; #50 r=‘h35; #100 r=‘hE2; #150 r=‘h00; #200 r=‘hF7; end

17 结构说明语句 Initial说明语句(多个并行) VS main() Always语句 Function:必须要有输入,通过返回响应输入
不断执行 Always #half_period areg=~areg; Function:必须要有输入,通过返回响应输入 Task:多种目的,可调用其他task或function

18 Verilog里可在块内定义局部变量 所有变量都静态存储

19 预处理&编译 `define:宏名代替字符串,不作语法检查 `include:将库的内容全部复制进来
可以出现在Verilog HDL源程序的任何地方 `timescale <时间单位>/<时间精度> #d 由时间单位和时间精度来决定 E.g. `timescale <2s>/<1ms> #3.002 真实延迟时间为6.001s

20 抽象级别 系统级 算法级 RTL级 Register Transfer Level 门级 开关级

21 门级结构

22 Difference between Verilog&C
Blocking,Non Blocking 顺序块&并行块 块与块之间并行执行 task&function 独特的系统函数 $monitor,$stop

23 C VS Verilog C Language: 灵活,查错功能强,语法完备,缺陷较少
Verilog:在一些方面(e.g. 算法表达)方面不方便 利用C的完整性和Verilog对硬件描述的精确性……

24 互相配合 C Language:算法的描述和验证
Verilog:设计专门的电路来进行对速度有要求的实时数据处理,从电路结构上保证算法能在规定时间内完成

25 Reference 《Verilog经典教程》by 夏宇闻 Wikipedia

26 Questions are welcome~ 2012.7.25
THANK YOU  Questions are welcome~


Download ppt "Introduction to Verilog"

Similar presentations


Ads by Google