概述
通过11个TL小型电路模块的代码编译,观察电路的RTL结构和波形仿真的时序,快速了解如何设计基本的电路组件。
1.做一个4选1的mux,并且进行波形仿真,和2选1的mux对比,观察资源消耗的变化;
Verilog代码如下:
RTL视图如下:
波形仿真结果如下:
资源消耗如下:
对比2选1的mux(如下图),可以看出4选1的mux实际上就是在2选1的mux上进行拓展,选用2位的控制信号控制4位输入信号择输出,资源消耗较2选1的mux要多。
2.编写一个4X4路交叉开关的RTL,然后编译,看RTL View 比较2x2与4x4之间消耗资源的区别。通过对比资源,你有什么结论?
Verilog代码如下:
RTL视图如下:
波形仿真结果如下:
资源消耗如下:
对比2X2的交叉开关(如下图),可以看出4X4的交叉开关消耗资源成倍增长,2X2路的交叉开关核心思想就是使用2个输出分别对应1个1位的控制信号,选择该输出哪一个输入信号。如此,则每个输出对应一个2位的控制信号,从4个输入信号中选择一个进行输出,然后并联输出。
3.编写一个8输入的优先编码器,然后编译,看RTL View
Verilog代码如下:
RTL视图如下:
波形仿真结果如下:
4.
- 编写一个4-16的译码器,编译
- 和3-8译码器对比资源开销
- 看RTL View
Verilog代码如下:
RTL视图如下:
波形仿真结果如下:
资源消耗如下:
对比下图(3-8译码器资源资源消耗图),输入多了一位、输出多了八位,资源损耗几乎多了一倍,由此可知,资源消耗主要与输出位数正相关。
5.
- 把加法器的输出信号改成4比特位宽,编译,波形仿真。观察输出结果,说出输出和输入的对应关系。
- 把加法器的输入信号改成8比特位宽,编译,波形仿真。观察加法器的输出延迟,和4比特输入位宽的情况对比,你有什么结论,为什么?
1)Verilog代码如下:
波形真结果如下:
如图可知,输出存在时延,且当正确结果大于15后只输出正确结果的后4位,如IN1输入为11,IN2输入为7时,OUT最终显示8。
2)Verilog代码如下:
波形真结果如下:
输出时延稍大于4输入的无符号加法器。
6.把加法器的输出信号改成4比特位宽,编译,波形仿真。观察输出结果,观察输出结果在什么时候是正确的?把加法器的输入信号改成8比特位宽,编译,波形仿真。观察加法器的输出延迟,和4比特输入位宽的情况对比,你有什么结论,为什么?
1)Verilog代码如下:
波形真结果如下:
2)Verilog代码如下:
波形真结果如下:
其基本原理与无符号加法器相同,只不过其运算法则变为补码运算。
7.不改变流水线的级数,把加法器的输入信号改成8比特位宽,编译,波形仿真,和不带流水线的情况对比一下,你有什么结论? 在8比特输入位宽的情况下,在输入上再添加一级流水线,观察编译和仿真的结果,你有什么结论?
1)Verilog代码如下:
RTL视图如下:
波形真结果如下:
与不加流水线的加法器相比,带流水线的加法器即在加法器的输入与输出都连接了D触发器,有效的减少了组合逻辑的竞争与冒险,从而明显减少了“毛刺”的长度。而流水线的级数越高,毛刺也随之越短,但输出的时延也会相应的对一个时钟周期。
2)Verilog代码如下:
RTL图如下:
波形仿真结果如下:
8.
- 改变乘法器的输入位宽为8比特,编译,波形仿真,观察信号毛刺的时间长度。
- 选一款没有硬件乘法器的FPGA芯片(例如Cyclone EP1C6)对比8比特的乘法器和加法器两者编译之后的资源开销(Logic Cell的数目)
- 编写一个输入和输出都有D触发器的流水线乘法器代码,编译后波形仿真,观察组合逻辑延迟和毛刺的时间,和不带流水线的情况下对比。
1)Verilog代码如下:
RTL图如下:
波形仿真结果如下:
2)Verilog代码如下:
资源消耗如下:
对比下图(8比特的加法器)可见,无硬件乘法器芯片的无符号乘法器硬件资源消耗非常巨大。
3)Verilog代码如下:
波形仿真结果如下:
9.
请完成以下设计实验,编译电路并且进行波形仿真。
- 设计一个最简单的计数器,只有一个CLK输入和一个OVerflow输出,当计数到最大值的时钟周期CLK输出1
- 设计复杂的计数器,和本例相似,带有多种信号,其中同步清零CLR的优先级最高,使能EN次之,LOAD最低。
1)Verilog代码如下:
RTL图如下:
波形仿真结果如下:
2)Verilog代码如下:
RTL视图如下:
波形仿真结果如下:
10.
设计一个用于识别2进制序列“1011”的状态机
- 基本要求:
- 电路每个时钟周期输入1比特数据,当捕获到1011的时钟周期,电路输出1,否则输出0
- 使用序列101011010作为输出的测试序列
- 扩展要求:
- 给你的电路添加输入使能端口,只有输入使能EN为1的时钟周期,才从输入的数据端口向内部获取1比特序列数据。
1)Verilog代码如下:
RTL视图如下:
2)Verilog代码如下:
状态转移图及表达式如下:
波形仿真结果如下:
11. 设计一个如本节“电路描述”部分的“带加载使能和移位使能的并入串出”的移位寄存器,电路的RTL结构图如“电路描述”部分的RTL结构图所示。
Verilog代码如下:
RTL视图如下:
波形仿真结果如下:
最后
以上就是孝顺砖头为你收集整理的Verilog RTL 代码设计的全部内容,希望文章能够帮你解决Verilog RTL 代码设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复