Menu Close

Verilog 语法练习(3)模块例化

1.

模块例化,将下列模块sub_mod在顶层模块top_module例化。注意将sub_mod的输入连接top_module的输入,sub_mod的输出连接top_module的输出。

sub_mod模块如下:


完善下列代码:


 

2.

通过信号对应位置例化模块。将下列模块sub_mod在顶层模块top_module例化。

sub_mod模块如下:


完善下列代码:


 

3.

通过信号名例化模块。将下列模块sub_mod在顶层模块top_module例化。

sub_mod模块如下:


完善下列代码:


 

4.

如果子模块sub_mod是一个d-flip flop,在顶层模块top_module例化4个移位寄存器,并将串行输出。

 

sub_mod模块如下:


 

完善下列代码:


 

上题中实现的是4位d-ff 串行输出,如果是100位,应该怎么做呢?

5.

在问题4的基础上,将输入,输出端扩展成8-bit向量。并在顶层模块使用片选来选择输出,如下图所示:

 

sub_mod模块如下:


 

完善下列代码:


 

问题6~问题10可以参考文章Verilog 全加(减)器及累加器设计

6.

用简单逻辑门或Verilog语法实现1-bit全加器(参考文章提高数字系统设计性能–数字设计与Verilog 设计技巧一 算法)


 

7.

实现16-bit全加器(可以使用问题6中的1-bit全加器模块实现):


 

8.

 

将问题7中的fadd_16 按照下图的连接方式在顶层模块进行例化:

 

 

完善下列代码:


 

9.

在问题8中可以看到计算sum[31:16]的fadd_16的ci需要计算sum[15:0]的fadd_16的co。注意上述算法的缺点是加法器的进位延迟可能相当慢,要等到第一级fadd_16完成后才能开始计算第二级fadd_16。 可以改进成进位选择加法器,如下图所示。 第一级加法器和以前一样,但是复制第二级加法器,一个假设进位=0,一个假设进位=1,然后使用一个快速的2-1 MUX来选择哪个结果是正确的。

 

完善下列代码:


 

10.

在问题7的基础上实现32位全加器全减器(根据信号sub来控制输出a + b或是a – b, sub ==0 ,加法; sub == 1 ,减法)。注意:全减器采用补码的方式实现,2进制补码对变量取反加一。

全减器仿真结果应该如下所示:

完善以下代码:


 

提供的仿真文件如下:


 

对应视频:

Posted in FPGA, FPGA 教材教案, FPGA习题库, 教材与教案, 文章