Verilog数字系统设计第(三)章总结

3.1 模块的结构

Verilog 的基本设计单元是“模块”( block)。一个模块是由两部分组成的:一部分描述接口另一部分描述逻辑功能,即定义输入是如何影响输出的。
Verilog 模块结构位于在 module和 endmodule声明语句之间。每个Verilog程序包括4个主要部分:端口定义、I/O说明、内部信号声明、功能定义

3.1.1 模块的端口定义

模块的端口声明了模块的输入输出口。其格式如下:

module模块名(口1,口2,口3,口4,…...)

在引用模块时其端口有两种方式连接:
一种是位置关联

模块名(连接端口1信号名,连接端口⒉信号名,连接端口3信号名,……) ;

一种是名称关联

模块名(.端口1名(连接信号1名),端口2名(连接信号2名),……) ;

3.1.2 模块内容

模块的内容包括I/O说明、内部信号声明、功能定义。

  1. I/O说明的格式
    
    输入口:
    input[信号位宽-1:0]端口名1;
    input[信号位宽-1:0]端口名2;
    ...
    input[信号位宽-1:0]端口名i;//(共有i个输人口)

输出口:
output[信号位宽-1:0]端口名1;
output[信号位宽-1:0]端口名2;

output[信号位宽-1:0]端口名j;//(共有j个输出口)

输人/输出口:
inout[信号位宽-1:0]端口名1;
inout[信号位-1:0]端口名2;

inout[信号位宽-1:0]端口名k;//(共有k个双向总线端口)

2. **内部信号声明**
wire和 reg类型变量的声明:
```verilog
reg  [width-1 : 0]R变量1,R变量2……;
wire [width-1 : 0]W变量l,W变量2……;
  1. 功能定义
    模块中最重要的部分是逻辑功能定义部分,有以下3种方法可在模块中产生逻辑。
    (1)assign声明语句
    如:

    assign a=b &c;//两输入与门

    (2)实例元件
    如:

    and #2 ul( q,a,b );//两输入与门

    (3))always块
    如:

    always @ (posedge clk or posedge clr) ;
    begin
    if(clr)q<=0;
    else if(en)q<= d;
    end

    采用assign语句是描述组合逻辑最常用的方法之一,而 always块既可用于描述组合逻辑,也可描述时序逻辑。

always语句的执行顺序:

  • “always”模块内,逻辑是按照指定的顺序执行的。“always”块中的语句称为“顺序语句”,因为它们是顺序执行的。所以, " always”块也称为“过程块”。
  • 两个或更多的“always”模块都是同时执行的,而模块内部的语句是顺序执行的。

与C语言的不同:

  • 在Verilog模块中所有过程块(如:initial 块,always块),连续赋值语句,实例引用都是并行的
  • 它们表示的是一种通过变量名互相连接的关系。
  • 在同一模块中,assign语句、实例元件、always块语句这三者出现的先后顺序没有关系。
  • 只有连续赋值语句assign和实例引用语句可以独立于过程块而存在于模块的功能定义部分

3.2 数据类型及其常量和变量

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇