基于SparkRoad的《Verilog数字系统设计教程·第三版(夏宇闻)》学习(3)——第2章

学习:

Verilog模型可以是实际电路的不同级别抽象,5种:
1.系统级(system-level):用语言提供的高级结构能够实现待设计模块的外部性能的模型。
2.算法级(algorithm-level):用语言提供的高级结构能够实现算法运行的模型。
3.RTL级(register transfer level):描述数据在寄存器之间的流动和如何处理、控制这些数据流动的模型。
以上三种属于行为描述,只有RTL级才与逻辑电路有明确的对应关系。
4.门级(gate-level):描述逻辑门以及逻辑门之间连接的模型。
与逻辑电路有确定的连接关系
5.开关级(switch-level):描述期间中三极管和存储节点以及它们之间连接的模型。
与具体的物理电路有对应关系

测试在功能级(即行为级)进行,称为前(RTL)仿真;
逻辑网表(逻辑布尔表达式),称为逻辑网表仿真;
门级结构级,称为门级仿真。

如果门级结构模块与具体的工艺技术对应起来,并加上布局布线引入的延迟模型,此时的仿真称为布线后仿真,与实际电路情况非常接近。

思考题:

1.Verilog语言有什么作用?

可描述顺序执行或并行执行的程序结构;
用延迟表达式或事件表达式来明确的控制过程的启动时间;
通过命名的事件来触发其他过程里的激活行为或停止行为;
提供了条件如if-else、case等循环程序结构;
提供了可带参数且非零延续时间的任务(task)程序结构;
提供了可定义新的操作符的函数结构(function);
提供了用于建立表达式的算术运算符、逻辑运算符、位运算符;
Verilog HDL语言作为一种结构化的语言非常适用于门级和开关级的模型设计
提供了一套完整的表示组合逻辑的基本元件的原语(primitive);
提供了双向通路(总线)和电阻器件的原语;
可建立MOS器件的电荷分享和电荷衰减动态模型;
Verilog HDL的构造性语句可以精确地建立信号的模型。

2.构成模块的关键词是什么?

module、endmodule

3.为什么说可以用Verilog构成非常复杂的电路结构?

Verilog HDL程序由模块构成;模块可以进行层次嵌套,大型的数字电路设计可以分割成不同的小模块实现特定功能。

4.为什么可以用比较抽象的描述来设计具体的电路结构?

有抽象描述设计电路结构的语言,是适合数字系统设计的语言。

5.是否任意抽象的符合语法的Verilog模块都可以通过综合工具转变为电路结构?

不能。符合语法,还要符合一些基本规则。

6.什么叫综合?

通过综合工具把行为级描述的模块通过逻辑网表自动转化为门级形式的模块叫综合。

7.综合是由什么工具来完成的?

EDA工具。

8.通过综合产生的是什么?产生的结果有什么用处?

产生的是由与、或、非门组成的组合逻辑电路。产生的模块很容易与某种工艺的基本元件逐一对应,再通过布局布线工具自动转变为某种工具工艺的电路布线结构。

9.仿真是什么?为什么要仿真?

仿真是对电路模块进行动态的全面测试。通过观察测试模块的输出信号是否符合要求,可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改。

10.仿真可以在几层面上进行?每个层面的仿真有什么意义?

分别为前仿真、逻辑网表仿真、门级仿真和布线后仿真。
前三者可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改;布线后仿真分析设计的电路模块运行是否正常。

11.模块的端口是如何描述的?

module 模块名(input A,output B);

12.在引用实例模块时,如何在主模块中连接信号线?

.()
“.”表示被引用模块的端口,“()”表示本模块中与之连接的模块。

13.如何产生连续的周期性测试时钟?

always #(period/2) clock = ~clock;
这种声明好像也可以(《Verilog数字系统设计教程·第三版(夏宇闻)》P24)如此:always #50 clock=~clock;
产生一个不断重复的周期为100个的时钟信号clock

14.如果不用initial块,能否产生测试时钟?

不能,不用initial块,无时钟初始值。

15.从本讲的简单例子,是否能明白always块与initial块有什么不同?

initial执行一次,always执行无数次。

16.为什么说Verilog可以用来设计数字逻辑电路和系统?

同1. Verilog作用。

posted @ 2023-05-22 17:54  江左子固  阅读(24)  评论(0编辑  收藏  举报