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

「Verilog学习笔记」移位运算与乘法

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

 

分析 

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

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

`timescale 1ns/1ns
module multi_sel(
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] din ; always @ (posedge clk or negedge rst) begin if (~rst) begin cnt <= 0 ; out <= 0 ; input_grant <= 0 ; din <= 0 ; end else begin cnt <= (cnt + 1) % 4 ; // cnt <= cnt + 1 由于是2位的寄存器 溢出后自动清0 两种写法皆可case (cnt) 0 : begin din <= d ; input_grant <= 1 ; out <= d ; end 1 : begin input_grant <= 0 ;out <= (din << 2) - din ; end 2 : begininput_grant <= 0 ; out <= (din << 3) - din ; end 3 : begin input_grant <= 0 ; out <= din << 3 ; end endcaseend end //*************code***********//
endmodule

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

相关文章:

  • 静态、友好、内在:解析C++中的这些特殊元素和对象复制的优化
  • 【RabbitMQ】 RabbitMQ 消息的延迟 —— 深入探索 RabbitMQ 的死信交换机,消息的 TTL 以及延迟队列
  • CVE-2023-34040 Kafka 反序列化RCE
  • 全局变量和局部变量在for循环的使用
  • pytorch collate_fn测试用例
  • 【qemu逃逸】HITB2017-babyqemu 2019数字经济-qemu
  • Docker Compose学习笔记
  • 基于树 二叉树的回溯搜索算法(DPLL)
  • 【嵌入式】适用于ESP32/ESP8266远程自动烧录工具
  • 服务器遭受攻击如何处理(记录排查)
  • 分享81个工作总结PPT,总有一款适合您
  • 什么是DITA?从百度的回答说起
  • 线扫相机DALSA软件开发套件有哪些
  • Scala集合操作
  • SQL备忘--特殊状态“未知“以及“空值NULL“的判断
  • 《Pytorch新手入门》第一节-认识Tensor
  • 【JAVA学习笔记】55 - 集合-Map接口、HashMap类、HashTable类、Properties类、TreeMap类(难点)
  • Pytorch图像模型转ONNX后出现色偏问题
  • 插值表达式 {{}}
  • 白雪公主
  • 宏观角度认识递归之合并两个有序链表
  • Leetcode-509 斐波那契数列
  • 解密 docker 容器内 DNS 解析原理
  • 故障诊断模型 | Maltab实现SVM支持向量机的故障诊断
  • 开源的网站数据分析统计平台——Matomo
  • linux入门到地狱
  • 架构”4+1“视图
  • 『精』Vue 组件如何模块化抽离Props
  • JavaScript字符串字面量详细解析与代码实例
  • Android java Handler sendMessage使用Parcelable传递实例化对象,我这里传递Bitmap 图片数据