基于Verilog HDL的FPGA设计基础

发布于:2024-09-18 ⋅ 阅读:(147) ⋅ 点赞:(0)

第一章 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语言要素

空白符

  1. 空格符(\b)
  2. 制表符(\t)
  3. 换行符
  4. 换页符

注释符

  1. 单行注释    //
  2. 多行注释    /* */

注:多行注释不允许嵌套,单行注释可以嵌套在多行注释中

标识符和转义标识符

标识符

字母、数字、$、_(下划线)

注:标识符的字母区分大小写,第一个字符必须是字母或者下划线

转义标识符

以 \(反斜线)开头,以空白结尾(空白可以是一个空格、一个制表符或换行符)

  • 数据类型
  • 运算符

关键字

数值

四值电平逻辑

下划线_分隔字符,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高级程序设计举例

第七章 仿真测试工具和综合工具


网站公告

今日签到

点亮在社区的每一天
去签到