zoukankan      html  css  js  c++  java
  • Verilog HDL模块的结构

    一个设计是由一个个模块(module)构成的。一个模块的设计如下:


    1、模块内容是嵌在module 和endmodule两个语句之间。每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,最
    后通过由顶层模块调用子模块来实现整体功能,这就是Top-Down的设计思想,如 3.3.1的例[3]。


    2、模块包括接口描述部分和逻辑功能描述部分。这可以把模块与器件相类比。 模块的端口定义部分:


    如上例: module addr (a, b, cin, count, sum);   其中module 是模块的保留字,addr 是模块的名 字,相当于器件名。()内是该模块的端口声明,定义了该模块的管脚名,是该模块与其他模块 通讯的外部接口,相当于器件的pin 。


    模块的内容,包括I/O说明,内部信号、调用模块等的声明语句和功能定义语句。


    I/O说明语句如:    input [2:0] a; input [2:0] b; input  cin;  output  count; 其 中 的 input   、
    output、inout 是保留字,定义了管脚信号的流向,[n:0]表示该信号的位宽(总线或单根信号线)。
    逻辑功能描述部分如: assign d_out = d_en ? din :'bz;


    mytri  u_mytri(din,d_en,d_out);


    功能描述用来产生各种逻辑(主要是组合逻辑和时序逻辑,可用多种方法进行描述,具体的
    用法下面章节有介绍),还可用来实例化一个器件,该器件可以是厂家的器件库也可以是我们自 己用HDL设计的模块(相当于在原理图输入时调用一个库元件)。在逻辑功能描述中,主要用到 assign 和always 两个语句。


    3、对每个模块都要进行端口定义,并说明输入、输出口,然后对模块的功能进行逻辑描述, 当然,对测试模块,可以没有输入输出口。


    4、Verilog HDL 的书写格式自由,一行可以写几个语句,也可以一个语句分几行写。具体由 代码书写规范约束。


    5、除endmodule 语句外,每个语句后面需有分号表示该语句结束。

  • 相关阅读:
    在 springboot 中如何整合 shiro 应用 ?
    HTTP协议入门基础
    Git进阶--你可能不知道的很好用Git功能
    CentOS Linux最常用命令及快捷键整理
    Linux 下的 Docker 安装与使用
    Linux下强大的查找命令find 用法和常见用例
    如何使用find命令在Linux中查找文件
    Linux常用基础命令整理:关机命令、查看目录下文件命令等
    linux 时间同步的2种方法
    什么是跨域?
  • 原文地址:https://www.cnblogs.com/riskyer/p/3359746.html
Copyright © 2011-2022 走看看