HDLBits-02-Verilog语言--模块:层次结构

HDLBits-02-Verilog语言–模块:层次结构

Module shift8

在这里插入图片描述
本练习是module_shift的扩展。现在,模块不再是仅单个引脚的模块端口,而是将带有矢量的模块作为端口,您将在其中附加导线矢量而不是普通导线。像Verilog中的其他任何地方一样,端口的向量长度不必与连接到其的电线相匹配,但是这将导致向量的零填充或局部化。本练习不使用向量长度不匹配的连接。

您将获得一个my_dff8带有两个输入和一个输出的模块(实现一组8个D触发器)。实例化它们中的三个,然后将它们链接在一起以构成一个长度为3的8位宽移位寄存器。此外,创建一个4比1多路复用器(未提供),该多路复用器根据以下选择输出什么sel[1:0]:输入的值d,在第一个,第二个或第三个D触发器之后。(本质上,sel选择延迟输入的周期数,从零到三个时钟周期。)

提供给您的模块是: module my_dff8 ( input clk, input [7:0] d, output [7:0] q );

没有提供多路复用器。一种可能的写方法是在内部always带有case语句的块中。(另请参见:mux9to1v)

在这里插入图片描述
在系统中声明了八位的输入d,以及两位的输入sel,从图中可以看出,sel是用作于数据选择器的选择端,在top_module中有一个子模块,重复使用,将下一个输出作为输入使用。

代码

由于子模块一输入一输出,可以看做是用于延迟,将各个输出都作为数据选择器的一个输入,可以看出是各个延迟的输入不同。具体代码如下:

在这里插入图片描述

编译之后显示:
在这里插入图片描述
在case语句与调用子模块互换时发现编译也是没有问题,可以看出前后顺序不影响结果。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值