FPGA第七篇:模块的结构、数据类型、变量和基本运算符
来源:互联网 发布:乔治亚当斯基事件知乎 编辑:程序博客网 时间:2024/06/05 22:58
第三章《模块的结构、数据类型、变量和基本运算符》
一、概念:
1、Verilog程序包含几个部分?
(1)端口定义 (2)I/O说明 (3)内部信号声明 (4)功能定义
2、模块的端口描述
将端口定义、I/O说明、类型说明在module block(端口1,...,端口n)一句话里面说明清楚。
3、功能描述
(1)assign:持续赋值语句,组合逻辑,阻塞赋值
(2)用实例元件:要求每个实例元件的名字必须唯一
(3)always块:组合或时序。其内部“顺序执行”。
付哥说:不要在always里面写组合逻辑。
4、与C语言相比,有哪些不同?
如果要用Verilog模块实现一定的功能,首先应该清楚哪些是同时发生的,哪些是顺序发生的。
(1)在Verilog模块中所有过程块(如:initial块、always块)、连续赋值语句(assign)、实例引用都是并行的;
(2)它们表示的是一种通过变量名互相连接的关系;
(3)在同一模块中这三者出现的先后顺序没有关系;
(4)只有连续赋值语句(assign)和实例引用语句(即用已定义的模块名引出的语句)可以独立于过程快而存在于模块的功能定义部分。
5、四个基本的数据类型之“常量数据类型”
定义:在程序运行过程中,其值不能被改变的量。
(1)数字
整数、x和z值、负数、下划线
注意:当常量不说明位数时,默认值是32位(这里指比特位),每个字母用8位的ASSIC码表示。
(2)参数(parameter)型
参数型常量经常用于定义延迟时间和变量宽度。
6、变量
(1)网络数据类型
a、网络数据类型的变量表示结构实体之间的物理连接
b、网络数据类型的变量不能存储值,而且它必须受到驱动器(门或assign)的驱动
c、若没有驱动器连接到网络数据类型的变量上,则该变量的值就是高阻态,其值为z。
d、wire型变量:
1)通常是用来表示单个门驱动或连续赋值语句驱动的网络型数据
2)表示用以assign关键字指定的逻辑符号
3)是默认的输入输出信号类型
4)wire型信号可以用做任何方程式的输入,也可以用作“assign”语句的或实例元件的输出
tri型变量:表示多驱动器驱动的网络型数据。
e、真值表(略)
(2)reg型
a、常用来表示always模块内的指定信号,常代表触发器。
b、always块内被赋值的每一个信号都必须定义为reg型。
c、reg型数据的默认初始值是不定值。
d、当reg型数据是一个表达式中的操作数时,它的值被当作是无符号值,即正值。
(3)memory型
用来描述RAM存储器、ROM存储器、reg文件。
7、位运算
不同长度的数据进行位运算:右端对其,位数少的高位用0填满。
二、疑问
1、一个.v文件中可以包含多个“module......endmodule”吗?
分开放,这是verilog coding style的一种良好习惯,每个文件里面只包含一个独立的module,把所有这些文件放在同一个目录下,在top文件里实例化这些module就可以调用了 。
2、always@(a or b or c)表示的含义是什么?
敏感信号为a或b或c,没有指定上升沿还是下降沿触发,所以默认为只要任一信号发生变化(上升沿或下降沿)就触发。
三、课后问题
1、模块有几部分组成?
2、端口分为几种?
3、为什么端口要说明信号的位宽?
4、能否说模块相当于电路图中的功能模块,端口相当于功能模块的引脚?
5、模块中的功能描述可以有哪几类语句或语句块组成?先后顺序?
6、这几类描述中哪一种直接与电路结构有关?
实例元件。
7、最基本的Verilog变量有几种类型?
8、reg和wire型的差别是什么?
wire型变量的值不是确定的值(有一个逻辑强度的概念),,reg型变量的值存储在寄存器中,其中的值在变量发生改变时才会改变。
9、由连续赋值语句assign赋值的变量能否是reg类型的?
可以的。
10、略
11、参数类型的变量有什么用处?
12、Verilog语法规定的参数传递和重新定义功能有什么直接的应用价值?
- FPGA第七篇:模块的结构、数据类型、变量和基本运算符
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- 变量、数据类型、运算符和条件结构
- 数据类型、变量和运算符
- 变量、数据类型和运算符
- 数据类型、变量和运算符
- 变量、数据类型和运算符
- 变量、数据类型和运算符
- 变量、数据类型和运算符
- 变量、数据类型和运算符
- 变量、数据类型和运算符
- 变量、数据类型和运算符
- PHP基本语法、变量、数据类型、运算符
- 002Java变量、基本数据类型、运算符
- 基本数据类型和运算符
- 基本数据类型和运算符
- Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符
- 利用tesseract-ocr进行验证码识别
- UNPv1第十九章:多播
- 《Linux C》03 文件I/O之Read操作
- jQuery常见的面试题
- Android 一个应用程序调用另一个应用程序
- FPGA第七篇:模块的结构、数据类型、变量和基本运算符
- javaweb——BeanUtils工具的使用
- concurrent之BlockingQueue
- Android微信支付 调起支付流程
- 10段超有用的Git命令行代码
- 安卓onKeyDown事件
- 导入hadoop Maven项目时,eclipse pom.xml提示Missing artifact jdk.tools:jdk.tools:jar:1.6 的解决方案
- C++数组
- Android 中关于XLIFF你应该知道的知识点