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

【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL77

编写乘法器求解算法表达式

描述

编写一个4bit乘法器模块,并例化该乘法器求解c=12*a+5*b,其中输入信号a,b为4bit无符号数,c为输出。注意请不要直接使用*符号实现乘法功能。

模块的信号接口图如下:

    要求使用Verilog HDL语言实现以上功能,并编写testbench验证模块的功能。

输入描述:

clk:系统时钟信号

rst_n:复位信号,低电平有效

a:输入信号,位宽为4bit

b:输入信号,位宽为4bit

输出描述:

c:输出信号

解题思路:

移位运算与乘法的关系如下:

左移n位表示2^n;

右移n位表示2^n;

当直接在一个always语句块中写入代码,如下所示:

`timescale 1ns/1nsmodule calculation(input clk,input rst_n,input [3:0] a,input [3:0] b,output [8:0] c);wire [8:0] a_9, b_9;reg [8:0] c_r;assign a_9 = {5'b0_0000, a[3:0]};assign b_9 = {5'b0_0000, b[3:0]};always @(posedge clk or negedge rst_n) beginif (!rst_n) c_r <= 9'b0_0000_0000;else c_r <= (a_9<<3)+(a_9<<2)+(b_9<<2)+b_9;endassign c = c_r;endmodule

可发现其波形如下:

如红色方框所示,最终输出C的值是在第二个时钟上升沿的到来时才正常输出,因此在信号a,b输入时,应该打一拍

正确的代码如下:
`timescale 1ns/1nsmodule calculation(input clk,input rst_n,input [3:0] a,input [3:0] b,output [8:0] c);reg [8:0] a_9, b_9;reg [8:0] c_r;always @(posedge clk or negedge rst_n) beginif (!rst_n) begina_9 <= 9'b0_0000_0000;b_9 <= 9'b0_0000_0000;endelse begina_9 <= {5'b0_0000, a[3:0]};b_9 <= {5'b0_0000, b[3:0]};endendalways @(posedge clk or negedge rst_n) beginif (!rst_n) c_r <= 9'b0_0000_0000;else c_r <= (a_9<<3)+(a_9<<2)+(b_9<<2)+b_9;endassign c = c_r;endmodule

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

相关文章:

  • thinkPHP 8.0.4 安装
  • 在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container
  • 寄存器二分频电路
  • Kafka3.8.0+Centos7.9的安装参考
  • Redis——持久化策略
  • 并查集LRU cache
  • SpringCloud的学习(三),Resilience4j
  • 【计算机网络篇】计算机网络概述
  • UDS诊断-面试题2
  • ovirt error: Network not found: no network with matching name ‘vdsm-ovirtmgmt‘
  • 2024百度的组织架构和产品分布
  • Java中List、ArrayList与顺序表
  • 缓存技巧 · Spring Cache Caffeine 高性能缓存库
  • RabbitMq中交换机(Exchange)、队列(Queue)和路由键(Routing Key)
  • 解码 OpenAI 的 o1 系列大型语言模型
  • 大小端字节序 和 内存高低地址顺序
  • Spring扩展点系列-MergedBeanDefinitionPostProcessor
  • Centos 7.9 使用 crontab 实现开机启动
  • 基于微信的设备故障报修管理系统设计与实现+ssm论文源码调试讲解
  • yolo自动化项目实例解析(二)ui页面整理 1.78
  • PyQt / PySide + Pywin32 + ctypes 自定义标题栏窗口 + 完全还原 Windows 原生窗口边框特效项目
  • 面试时遇见的项目问题
  • 在线骑行网站设计与实现
  • 大批量查询方案简记(Mybatis流式查询)
  • python - 子类为什么调用父类的方法
  • 【JavaScript】数据结构之字典 哈希表
  • Adobe出现This unlicensed Photoshop app has been disabled
  • elementui 单元格添加样式的两种方法
  • 如何有效管理技术债务:IT项目中的长期隐患
  • 2024 “华为杯” 中国研究生数学建模竞赛(D题)深度剖析|大数据驱动的地理综合问题|数学建模完整代码+建模过程全解全析