移位运算与乘法

news2025/1/18 8:49:50

描述

题目描述:           

        已知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)begin
        reg_d <= 8'd0;
        input_grant <= 1'b0;
    end
    else if(cnt == 2'd0)begin
        reg_d <= d;
        input_grant <= 1'b1;
    end
    else begin
        reg_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 
    begin
        clk = 1'b0;
        rst = 1'b0;
        d   = 8'd0;
        #30
        rst = 1'b1;             
        d   = 8'd8;
        #80
        d   = 8'd9;
        #80
        d   = 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.coloradmin.cn/o/1572266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用于超声图像中的乳腺病变分割的全局指导网络

用于超声图像中的乳腺病变分割的全局指导网络 摘要引言相关工作方法3.1. Global guidance block3.1.1. Spatial-wise global guidance block3.1.2. Channel-wise global guidance block3.2. Breast lesion boundary detection module 3.2.乳腺病灶边界检测模块 Global guidance…

promise.all方式使用

romise.all( ).then( ) 处理多个异步任务&#xff0c;且所有的异步任务都得到结果时的情况。 比如&#xff1a;用户点击按钮&#xff0c;会弹出一个弹出对话框&#xff0c;对话框中有两部分数据呈现&#xff0c;这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…

深入解析消息认证码(MAC)算法:HmacMD5与HmacSHA1

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 引言一、消息认证码&#xff08;MAC&#xff09;简介二、HmacMD5算法HmacMD5算法的工作原理 三、HmacSHA1算法HmacSHA1算法的…

什么是SYN攻击,有什么办法防御SYN攻击

自进入数字化互联网时代&#xff0c;网络技术给我们带来了许多服务&#xff0c;为人们的生活增添了许多便利。但同时&#xff0c;网络安全问题也日益凸显&#xff0c;其中DDoS攻击&#xff0c;即分布式拒绝服务攻击&#xff0c;已经成为一种常见的网络威胁。这种攻击方式通过控…

面试经典150题【141-150】

文章目录 面试经典150题【141-150】208.实现前缀树&#xff08;Trie树&#xff09;211. 添加与搜索单词-数据结构设计212.单词搜索II200.岛屿数量130.被围绕的区域133.克隆图399.除法求值&#xff08;未做&#xff09;拓扑排序207.课程表210.课程表II 面试经典150题【141-150】…

实战:Solrais系统下Oracle 12.2 在线扩容ASM磁盘组操作记录

这篇文章主要是为了记录一下操作&#xff0c;这个假期又要给这套RAC扩容磁盘。 我这套Solaris的小机我还不总操作这玩意&#xff0c;和LINUX有点小差别&#xff0c;整理记录一下&#xff0c;要不每次都是现翻。 存储端划LUN映射到主机 登录到3PAR存储控制台&#xff0c;创建…

ARM汇编与逆向工程:揭秘程序背后的神秘世界

文章目录 一、ARM汇编语言&#xff1a;底层世界的密码二、逆向工程&#xff1a;软件世界的侦探工作三、ARM汇编与逆向工程的完美结合四、ARM汇编逆向工程的风险与挑战五、ARM汇编逆向工程的未来展望《ARM汇编与逆向工程 蓝狐卷 基础知识》内容简介作者简介译者简介ChaMd5安全团…

前端学习之DOM编程案例:抽奖案例

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>抽奖案例</title><style>*{margin: 0;padding: 0;}</style> </head> <body><div id"container"&g…

【SpringCloud】Nacos 注册中心

目 录 一.认识和安装 Nacos1.Windows安装1. 下载安装包2. 解压3. 端口配置4. 启动5. 访问 2.Linux安装1. 安装JDK2. 上传安装包3. 解压4. 端口配置5. 启动 二.服务注册到 nacos1. 引入依赖2. 配置 nacos 地址3. 重启 三.服务分级存储模型1. 给 user-service 配置集群2. 同集群优…

低代码革新:软件开发的未来潜力与创新路径探索

过去的一年&#xff0c;挑战与机遇并存。人们一边忧虑市场经济下行所带来的新的增长难题、裁员危机&#xff0c;一边惊叹于AIGC、量子技术等领域不断涌现新的创新成果。 时代发生了改变&#xff0c;传统“互联网”的模式已走入尾声&#xff0c;新一轮的科技革命与产业变革正在到…

【刷题】代码随想录算法训练营第三天|203、移除链表元素,707、设计链表,206、反转链表

目录 203. 移除链表元素707. 设计链表206. 反转链表双指针法递归法 203. 移除链表元素 文档讲解&#xff1a;https://programmercarl.com/0203.%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV18B4y1s7R9…

活动回顾丨掘金海外,探寻泛娱乐社交APP出海新风口

3月中旬,Flat Ads携手声网、XMP在广州成功举办“泛娱乐社交APP出海新风口——广州站”的主题线下沙龙活动。 多位大咖与泛娱乐社交APP赛道的行业伙伴汇聚一堂。本次活动邀请到Flat Ads 市场VP 王若策、声网娱乐视频产品负责人 陈际陶、XMP资深产品运营专家 屈俊星等多位行业大…

20.安全性测试与评估

每年都会涉及&#xff1b;可能会考大题&#xff1b;多记&#xff01;&#xff01;&#xff01; 典型考点&#xff1a;sql注入、xss&#xff1b; 从2个方面记&#xff1a; 1、测试对象的功能、性能&#xff1b; 2、相关设备的工作原理&#xff1b; 如防火墙&#xff0c;要了解防…

Linux网络管理类命令

ping -c&#xff1a;指定次数 -i n&#xff1a;指定发送频率 n 秒 -t&#xff1a;指定 TTL 值 -s&#xff1a;指定发送包的大小 ifconfig iproute netstat -anltp ss ssh 主机名 SCP wget nmap -A: 全面扫描 -p &#xff1a;端口 80 22-80 80,25,443 -sP &#xf…

机器学习模型——K—Means算法

目录 无监督学习概念&#xff1a; 有监督学习与无监督学习&#xff1a; 无监督学习 - 聚类分析 &#xff1a; 聚类算法应用场景&#xff1a; 常用聚类算法介绍&#xff1a; 对不同的聚类算法应用选择原则&#xff1a; 基于原型聚类&#xff1a; K-Means聚类算法概念及步…

故障分析,大有可为!考虑光热电站及N-k故障的新能源电力系统优化调度程序代码!

前言 近年来&#xff0c;为了践行国家“节约、清洁、安全”的能源发展方针&#xff0c;推动高比例可再生能源接入电网&#xff0c;以风电为代表的可再生能源迅猛发展。但随着风电渗透率的增加&#xff0c;弃风现象严重&#xff0c;风电消纳问题亟需解决。同时&#xff0c;风电…

基于SpringBoot+Vue的OA管理系统

一、项目背景介绍&#xff1a; 办公自动化&#xff08;Office Automation&#xff0c;简称OA&#xff09;&#xff0c;是将计算机、通信等现代化技术运用到传统办公方式&#xff0c;进而形成的一种新型办公方式。办公自动化利用现代化设备和信息化技术&#xff0c;代替办公人员…

面试题——JVM老年代空间担保机制(我的想法)

这里借用一下人家的图&#xff0c;来说一下我的想法&#xff0c;嘻嘻。。。。 原文链接&#xff1a;一道面试题&#xff1a;JVM老年代空间担保机制-CSDN博客? 嗯&#xff0c;我觉得老年代担保机制的主要作用就是避免频繁触发FULL GC&#xff0c;这其实也是因为年轻代Minor GC…

DV证书与OV证书的区别

在网络安全日益受到重视的今天&#xff0c;数字证书扮演着至关重要的角色。其中&#xff0c;DV证书&#xff08;域名验证证书&#xff09;和OV证书&#xff08;组织验证证书&#xff09;是两种常见的SSL/TLS证书类型&#xff0c;它们在验证流程和适用场景上存在显著区别。 首先…

666666666666666666

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…