我是靠谱客的博主 谦让豌豆,最近开发中收集的这篇文章主要介绍Verilog的抽象级别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

所谓抽象级别,实际上是指同一个物理电路,可以在不同的层次上用 Verilog 语言来描述它。Verilog 硬件描述语言支持以下五种级别:

(1) 系统级;

(2) 算法级;

(3) RTL级;

(4) 门级;

(5) 开关级;

其中,系统级和算法级是属于行为级描述方式的,RTL级又称为数据流描述方式,门级和开关级是属于结构化描述方式的,下面分别对这三种方式进行介绍。

1. 结构化描述方式

结构化描述方式是最原始的描述方式,也是抽象级别最低的描述方式,它是最接近实际的硬件结构的描述方式。下面以三人表决器为例。使用结构化Verilog进行描述:

module Example_Structure(A, B, C, L)

    input A;
    input B;
    input C;
    output L;

    wire AB, BC, AC;    // 内部信号声明
    
    and U1(AB, A, B);   // 与门(A,B信号进入,AB表示A与B信号输出)
    and U2(BC, B, C);
    and U3(AC, A, C);

    or U4(L, AB, BC, AC);    // 或门

endmodule

 

2. 数据流描述方式

数据流描述方式要比结构化描述方式的抽象级别高一些,因为它不再需要清晰地刻画具体的数字电路架构,而是可以比较直观地表达底层逻辑的行为。基于数据流的描述方式,形象点来说,每个模块就好比一个容器,大量外部信息从模块的输入端流入,相应的大量的处理后信息也会从模块的输出端口流出。

module Example_Dataflow(A, B, C, L);

    input A;
    input B;
    input C;
    output L;

    assign L = ((!A)&B&C) | (A&(!B)&C) | (A&B&(!C) | (A&B&C));

endmodule

3. 行为级描述方式

和前面两种描述方式比起来,行为级描述方式的抽象级别最高,概括性也最强,因此规模稍大些的设计,往往都是以行为级描述方式为主。虽然FPGA的设计思路都是并行的,但是Verilog中还是支持大量的串行语句元素。由此可见,行为级描述方式的主要载体就是串行语句,同时辅以并行语句用于描述各个算法之间的连接关系。

module Example_Behavior(A, B, C, L);

    input A;
    input B;
    input C;
    output reg L;

    always @ (A, B, C)            // always在组合逻辑中的用法
    begin                         // 只要A,B,C其中一个信号变化就会执行begin中的case语句
        case ({A, B, C})          // 也能写成 always @ (*) 功能相同
            3'b000: L = 1'b0;
            3'b001: L = 1'b0;
            3'b010: L = 1'b0;
            3'b011: L = 1'b1;
            3'b100: L = 1'b0;
            3'b101: L = 1'b1;
            3'b110: L = 1'b1;
            3'b111: L = 1'b1;
            default: L = 1'bx;
        endcase
    end

endmodule

 

 

最后

以上就是谦让豌豆为你收集整理的Verilog的抽象级别的全部内容,希望文章能够帮你解决Verilog的抽象级别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部