移位运算与乘法

描述

题目描述:           

        已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效)

信号示意图:

波形示意图:

输入描述:

        输入信号   d, clk, rst
        类型 wire
        在testbench中,clk为周期5ns的时钟,rst为低电平复位

输出描述:

        输出信号 input_grant    out
        类型  reg 

解题分析:

        在硬件中进行乘除法运算是比较消耗资源的一种方法,想要在不影响延迟并尽量减少资源消耗,必须从硬件的特点上进行设计。根据寄存器的原理,由于是二进制,所以进位和退位为x2或者/2,同样除7可以使用进位3然后减去本身的做法,这样就将乘除法运算转化为位运算,这是一种比较简单的整数运算处理。

         需要给出一个计数器的状态机,注意d输入不是随时有效的,只有在cnt计数为0的那个时钟沿,d输入有效,因此需要设计一个寄存器din,在cnt为0时候锁存d的值。

代码如下:

`timescale 1ns/1ns
module vl4 (
input [7:0]d ,
input clk,
input rst,
output reg input_grant,
output reg [10:0]out
);
//*************code***********//reg [1:0] cnt;reg [7:0] reg_d;
//*******计数器初始化及赋值*******//    
always@(posedge clk or negedge rst)if(rst == 1'b0)cnt <= 2'd0;else if(cnt == 2'd3)cnt <= 2'd0;else cnt <= cnt + 1'b1;
//***数据寄存器(reg_d)和输入有效标志(input_grant)初始化及赋值***// 
always@(posedge clk or negedge rst)if(rst == 1'b0)beginreg_d <= 8'd0;input_grant <= 1'b0;endelse if(cnt == 2'd0)beginreg_d <= d;input_grant <= 1'b1;endelse beginreg_d <= reg_d;input_grant <= 1'b0;end
//****乘法运算****//       
always@(posedge clk or negedge rst)if(rst == 1'b0) out <= 11'd0;else case (cnt)2'd0 : out <= d;2'd1 : out <= (reg_d<<2)-reg_d;2'd2 : out <= (reg_d<<3)-reg_d;2'd3 : out <= (reg_d<<3);default : out <= 11'd0;endcase
//*************code***********//
endmodule

测试代码:

`timescale 1ns/1ns
module tb_vl4();
reg clk;
reg rst;
reg [7:0] d;wire input_grant;
wire [10:0] out;
//***时钟,复位,d信号赋值***//
initial beginclk = 1'b0;rst = 1'b0;d   = 8'd0;#30rst = 1'b1;             d   = 8'd8;#80d   = 8'd9;#80d   = 8'd10;end 
//***生成时钟信号***//
always #10 clk =~clk;
//***模块实例化***//    
vl4 vl4_inst
(.d          (d) ,.clk        (clk) ,.rst        (rst) ,.input_grant(input_grant) ,.out        (out)
);        endmodule

波形图:

alt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586615.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何同时安全高效管理多个谷歌账号?

您的业务活动需要多个 Gmail 帐户吗&#xff1f;出海畅游&#xff0c;Gmail账号是少不了的工具之一&#xff0c;可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台&#xff0c;可以说是海外网络的“万能锁”。但是大家都知道&#xff0c;以上这些平台注册多账号如果产生关…

如何一键展示全平台信息?Python手把手教你搭建自己的自媒体展示平台

前言 灵感源于之前写过的Github中Readme.md中可以插入自己的js图片和动态api解析模块&#xff0c;在展示方面十分的美观&#xff1a; 这方面原理可以简化为&#xff0c;在Markdown中&#xff0c;你可以使用HTML标签来添加图像&#xff0c;就像这样&#xff1a; <tr><…

代码随想录Day25:回溯算法Part2

Leetcode 216. 组合总和III 讲解前&#xff1a; 这道题如果掌握了组合那道题的话就变得非常容易了&#xff0c;其实就是多加了一个参数的问题&#xff0c;我们可选的数字从可变的变成了1-9固定&#xff0c;然后呢要找的组合大小还是k&#xff0c;这次多加一个条件就是组合中的…

打断点调试代码的思路(找bug的思路)二分法

现象&#xff1a; 当断点运行到此处&#xff0c;卡死 二分法&#xff1a; 用断点把程序切段&#xff0c;前一段&#xff0c;后一段 **前一段&#xff1a;检查变量值&#xff0c;如无问题&#xff0c;则说明没有任何问题 问题必然出在后一段 后一段&#xff1a;人为检查&…

JVS智能BI数据分析:图表的数据联动配置详解

图表的数据联动 图表的数据联动是指在可视化图表中&#xff0c;当一个图表的数据发生变化时&#xff0c;另一个图表中的数据也会自动更新。这种功能通常用于展示相互关联的数据集&#xff0c;帮助用户更直观地了解数据之间的关系和趋势。 我们先看看实际的效果&#xff0c;如下…

安卓Android 架构模式及UI布局设计

文章目录 一、Android UI 简介1.1 在手机UI设计中&#xff0c;坚持的原则是什么1.2 安卓中的架构模式1.2.1 MVC (Model-View-Controller)设计模式优缺点 1.2.2 MVP(Model-View-Presenter)设计模式MVP与MVC关系&#xff1a; 1.2.3 MVVM(Model—View—ViewModel ) 设计模式1.2.4 …

<网络> 网络Socket 编程基于UDP协议模拟简易网络通信

目录 前言&#xff1a; 一、预备知识 &#xff08;一&#xff09;IP地址 &#xff08;二&#xff09;端口号 &#xff08;三&#xff09;端口号与进程PID &#xff08;四&#xff09;传输层协议 &#xff08;五&#xff09;网络字节序 二、socket 套接字 &#xff08;…

Redis (String 底层数据结构)

Redis是查询数据很快的no Sql数据库。其原因不只是因为它存储在内存中&#xff0c;还因为它存储各种类型的数据结构。比如这期说到的String类型。String类型在Redis中应用很广泛。Redis中存储数据是以键值对的方式。这个键都是String类型。所以下面我们看下String类型的底层数据…

mac+win10虚拟机+phpstudy便捷运行php+pgsql的方法

痛点&#xff1a;mac下要搭建nginxphp&#xff08;含pdo_pgsql&#xff09;pgsql比较麻烦 另类解决方法&#xff1a; 前提&#xff1a;mac下需要已安装win10虚拟机 方法&#xff1a; 1. win10虚拟机下安装phpstudy8.1 -> 开启php扩展&#xff08;pdo_pgsql&#xff09;&a…

scRNA+bulk+MR:动脉粥样硬化五个GEO数据集+GWAS,工作量十分到位

今天给大家分享一篇JCR一区&#xff0c;单细胞bulkMR的文章&#xff1a;An integrative analysis of single-cell and bulk transcriptome and bidirectional mendelian randomization analysis identified C1Q as a novel stimulated risk gene for Atherosclerosis 标题&…

智慧驿站:智慧公厕的升级版,助力城市公共卫生设施的全面变革

智慧驿站&#xff0c;作为集合了智慧公厕的多功能驿站式的智慧城市部件&#xff0c;给城市的新基建带来了全面的变化。智慧公厕赋予智慧驿站智慧化管理的功能&#xff0c;将创意外观设计、智慧管理系统、全金属耐用结构和用材、整体制作与运输、快速落地使用、众多功能集合于一…

素组主元素

主要元素&#xff08;主元素&#xff09;是在一整数序列&#xff08;长度是N&#xff09;中出现次数大于N/2的元素&#xff0c;因为整数序列本身长度就是N&#xff0c;那么只要该整数序列中存在主元素&#xff0c;主要元素就是唯一的 思路&#xff1a; 思路一&#xff1a;穷举…