第一章 Verilog数字集成电路设计方法概述
HDL(Hardware Description Language)----硬件描述语言
EDA(Electronic Design Automation)----电子设计自动化
VLSI(Very Large Scale Integrated)----超大规模集成电路
ASIC(Application Specific Integrated Circuit)----专用集成电路
FPGA(Field Programmable Gate Array)----现场可编程门阵列
CPLD(Complex Programmable Logic Device)----复杂可编程逻辑器件
例1:用Verilog HDL描述4位和32位的与逻辑
4位总线与逻辑
module aand4(a,b,c); input [3:0]a,b; output [3:0]c; reg [3:0] c; always @(a or b) c=a&b; enmodule
32位总线与逻辑
module aand4(a,b,c); input [31:0]a,b; output [31:0]c; reg [31:0] c; always @(a or b) c=a&b; enmodule
例2:用Verilog HDL描述4位和8位移位寄存器
module shiftregist4(clk,din,Reset,qout); input clk,Reset,din; output [3:0] qoutl reg [3:0] qout; always @(posedge clk or posedge Reset) begin if(Reset) qout<=4'b0000; else begin qout[3]<=qout[2]; qout[2]<=qout[1]; qout[1]<=qout[0]; qout[0]<=din; end end enmodule
module shiftregist4(clk,din,Reset,qout); input clk,Reset,din; output [7:0] qoutl reg [7:0] qout; always @(posedge clk or posedge Reset) begin if(Reset) qout<=4'b0000; else begin qout[7:1]<=qout[6:0]; qout[0]<=din; end end enmodule
----高效、灵活性强、可拓展
例:二选一数据选择器
module mux(a,b,sel,out); input[0:0] a,b; input[0:0] sel; output[0:0] out; reg [0:0] out; always @(a,b,sel) case(sel) 2'b00:out=a; 2'b11:out=b; default:out=0; endcase enmodule
module mux_tb; reg a,b; reg [1:0] sel; wire out; mux u1(a,b,sel,out); initial begin sel=2'b00; a=0; b=0; #5 a=1; #5 a=0; #10 a=1; #10 a=0; #5 sel=2'b11l #5 b=1; #5 b=0; #5 b=1; #10 b=0; #5 sel=2'b10; a=1; b-1; end enmodule
第二章 Verilog HDL基础知识
Verilog HDL语言要素
空白符
- 空格符(\b)
- 制表符(\t)
- 换行符
- 换页符
注释符
- 单行注释 //
- 多行注释 /* */
注:多行注释不允许嵌套,单行注释可以嵌套在多行注释中
标识符和转义标识符
标识符
字母、数字、$、_(下划线)
注:标识符的字母区分大小写,第一个字符必须是字母或者下划线
转义标识符
以 \(反斜线)开头,以空白结尾(空白可以是一个空格、一个制表符或换行符)
- 数据类型
- 运算符
关键字
数值
四值电平逻辑
下划线_分隔字符,16'b1011_0001_1000_1100
整数
B、O、D、H
+/-<size>'<base_foemat><number>
size:二进制数的位宽
当数字没有说明位宽时,默认为32位
x或z在二进制中代表1位x或z,在八进制中代表3位,在十六进制中代表4位
若没有定义一个整数的位宽,其宽度为相应值中定义的位数
若定义的位宽比实际数的位数大(小),则在左边用0补齐。但如果数最左边一位为x或z,就相应地用x或z在左边补齐(截断)。
?是高阻态z的另一种表示符号
整数可以带正负号,并且正负号写在最左边。负数表示为二进制的补码形式。-4=4'b1100
如果位宽和进制都缺省,代表十进制数
数字中不能有空格,但在表示禁止的字母两侧可以有空格
实数
十进制表示
科学计数法
实数转换为整数的方法-----四舍五入
字符串
不能分行写
数据类型
物理类型------连线型、寄存器型、存储器型
抽象类型------整型、时间型、实型、参数型
八种信号强度
连线型wire
寄存器型reg
与wire区别:reg保持最后一次的赋值(具有电荷保持能力),wire型数据需要有持续的驱动
reg默认初始值为不定值x,缺省时位宽为1位
在always/initial中赋值,用reg
存储器型
range2-----个数
第三章 Verilog HDL程序设计语句和描述方法
第四章 Verilog HDL数字逻辑电路设计方法
第五章 仿真验证与Testbench的编写
第六章 Verilog HDL高级程序设计举例
第七章 仿真测试工具和综合工具