当前位置: 首页 > news >正文

verilog HDLBits刷题“Module shift8”--模块 shift8---模块和向量

一、题目

本练习是module_shift.模块端口不再只是单个引脚,我们现在有以向量作为端口的模块,您将连接线向量而不是普通线。与 Verilog 中的其他任何地方一样,端口的 vector 长度不必与连接到它的电线匹配,但这会导致 vector 的零填充或交叉。本练习不使用向量长度不匹配的连接。

您将获得一个具有两个 inputs 和一个 output 的模块(实现一组 8 个 D flip-flops)。实例化其中的三个,然后将它们链接在一起,形成一个长度为 3 的 8 位宽移位寄存器。此外,创建一个 4 对 1 多路复用器(未提供),该多路复用器选择要输出的内容取决于:输入 d 处的值、第一个 d 触发器之后、第二个 d 触发器之后或第三个 D 触发器之后的值。(本质上,选择延迟 input 的周期数,从 0 到 3 个 clock cycles.)my_dff8sel[1:0]sel

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

未提供多路复用器。一种可能的编写方法是在块内包含 statement。(另请参阅:alwayscaseMUX9TO1V)

 

模块声明

module top_module ( input clk, input [7:0] d, input [1:0] sel, output [7:0] q 
);

二、分析

 内部信号线要自己命名,使用多路复用器,即选择器时,用到always语句,该语句中的输出必须是reg类型,故可定义中间变量q_temp为reg类型,最后再将q_temp赋值给q。也可以在声明端口q时直接定义为reg类型。

 三、代码实现

module top_module ( input clk, input [7:0] d, input [1:0] sel, output [7:0] q 
);reg [7:0]q_temp;wire [7:0]q1,q2,q3;my_dff8 inst1(.clk(clk),.d(d),.q(q1));my_dff8 inst2(.clk(clk),.d(q1),.q(q2));my_dff8 inst3(.clk(clk),.d(q2),.q(q3));always@(*)begincase(sel)2'b00:q_temp<=d;2'b01:q_temp<=q1;2'b10:q_temp<=q2;2'b11:q_temp<=q3;endcaseendassign q=q_temp;
endmodule
module top_module (input clk,input [7:0] d,input [1:0] sel,output reg [7:0] q
);wire [7:0] o1, o2, o3;		// output of each my_dff8// Instantiate three my_dff8smy_dff8 d1 ( clk, d, o1 );my_dff8 d2 ( clk, o1, o2 );my_dff8 d3 ( clk, o2, o3 );// This is one way to make a 4-to-1 multiplexeralways @(*)		// Combinational always blockcase(sel)2'h0: q = d;2'h1: q = o1;2'h2: q = o2;2'h3: q = o3;endcaseendmodule

四、时序

http://www.lryc.cn/news/573077.html

相关文章:

  • Python 的内置函数 hasattr
  • 中国设计 全球审美 | 安贝斯新产品发布会:以东方美学开辟控制台仿生智造新纪元
  • 【Koa系列】10min快速入门Koa
  • 蓝牙 5.0 新特性全解析:传输距离与速度提升的底层逻辑(面试宝典版)
  • 项目开发中途遇到困难的解决方案
  • 深入解析BERT:语言分类任务的革命性引擎
  • 创业知识概论
  • tkinter Entry(输入框)组件学习指南
  • 加密货币:比特币
  • 5.3 LED字符设备驱动
  • HarmonyOS 6 + 盘古大模型5.5
  • 【Python】Excel表格操作:ISBN转条形码
  • 西门子S7通信协议抓包分析应用
  • 【入门级-基础知识与编程环境:NOI以及相关活动的历史】
  • AI 产品的“嵌点”(Embedded Touchpoints)
  • python打卡day37
  • 智能体互联网新闻速递及深度分析【250620】
  • STM32[笔记]--开发环境的安装
  • 大数据Hadoop集群搭建
  • Linux (2)
  • Java常见八股-(6.算法+实施篇)
  • 知识蒸馏(Knowledge Distillation, KD)
  • gitea本地部署代码托管后仓库的新建与使用(配置好ssh密钥后仍然无法正常克隆仓库是什么原因)
  • 李宏毅 《生成式人工智能导论》| 第6讲-第8讲:大语言模型修炼史
  • 【大模型学习】项目练习:知乎文本生成器
  • IPv6 | 地址解析 / 地址管理 / 邻居发现协议(NDP)/ 无状态自动配置(SLAAC)
  • 简单的 ​Flask​ 后端应用
  • FPGA基础 -- Verilog 的属性(Attributes)
  • HTTP Server
  • 解决uni-app发布微信小程序主包大小限制为<2M的问题