HDLbits笔记-移位寄存器
Circuits----sequential Logic
文章目录
- Circuits----sequential Logic
- 前言
- 一、shift registers(移位寄存器)
- 1.异步置零的移位寄存器
- 2.环形移位寄存器
- 二、算术移位寄存器
- 1题目
- 三、线性反馈移位寄存器(LFSR)
- 总结
前言
计算机中补码的形式存在,所以看补码的算术移位和逻辑移位
一、shift registers(移位寄存器)
对于逻辑移位,就是不考虑符号位,移位的结果只是数据所有的位数进行移位。
左移:低位补0
右移:高位补0
例:
01010101>>3=00001010
01101011<<3=01011000
1.异步置零的移位寄存器
移位补0
module top_module(input clk,input areset, // async active-high reset to zeroinput load,//Data is loaded at high levelsinput ena,//High levels shift data to the rightinput [3:0] data,output reg [3:0] q); always@(posedge clk or posedge areset)beginif(areset)q <= 4'd0;else if(load)q <= data;else if(ena)q <= {1'b0,q[3:1]};//q <= q[3:1]; Use vector part select to express a shift.elseq <= q;endendmodule
2.环形移位寄存器
以图为例子,数组data的大小为5,值分别为{0,1,2,3,4},循环右移3位
module top_module(input clk,input load,input [1:0] ena,input [99:0] data,output reg [99:0] q); always@(posedge clk)beginif(load)q <= data;elsebegincase(ena)2'b01: q <= {q[0],q[99:1]};2'b10: q <= {q[98:0],q[99]};default: q <= q;endcaseendendendmodule
二、算术移位寄存器
左移:属于逻辑移位,补’0’
右移:属于算术移位,补’符号位’
例:
01010101>>3=00001010(正数右移)
11010101>>3=11111010(负数右移)
01101011<<3=01011000
(补码的算术移位运算)
1题目
Build a 64-bit arithmetic shift register, with synchronous load. The shifter can shift both left and right, and by 1 or 8 bit positions, selected by amount.
(64位算术移位寄存器)
load: Loads shift register with data[63:0] instead of shifting.
ena: Chooses whether to shift.
amount: Chooses which direction and how much to shift
- 2’b00: shift left by 1 bit.
- 2’b01: shift left by 8 bits.
- 2’b10: shift right by 1 bit.
- 2’b11: shift right by 8 bits.
代码如下(示例)
module top_module(input clk,input load,input ena,input [1:0] amount,input [63:0] data,output reg [63:0] q); always@(posedge clk)beginif(load)q <= data;else if(ena)case(amount)2'b00: q <= {q[62:0],1'd0};2'b01: q <= {q[55:0],8'd0};2'b10: q <= {q[63],q[63:1]};2'b11: q <= {{8{q[63]}},q[63:8]};endcaseelseq <= q;endendmodule
三、线性反馈移位寄存器(LFSR)
LFSR的反馈函数就是简单地对移位寄存器中的某些位进行异或,并将异或的结果填充到LFSR的最左端,如图所示。对于LFSR中每一位的数据,可以参与异或,也可以不参与异或。其中,我们把参与异或的位称为抽头(taps)。
下图taps在 5 和 3
构造线性移位寄存器,reset应当使LFSR归1
代码如下(示例)
module top_module(input clk,input reset, // Active-high synchronous reset to 5'h1output [4:0] q
); always@(posedge clk)beginif(reset)q <= 5'h1;else beginq[4] <= 1'b0 ^ q[0];{q[3],q[1],q[0]} <= {q[4],q[2],q[1]};q[2] <= q[3] ^ q[0];endend
endmodule
总结
HDLbits笔记-移位寄存器相关推荐
- HDLBITS笔记29:移位寄存器(包括4位移位寄存器,创建100位左/右旋转器,算术偏移,线性反馈移位寄存器等)
题目1:4位移位寄存器(4-bit shift register) 构建一个具有异步复位.同步加载和使能功能的 4 位移位寄存器(右移位). reset:将移位寄存器重置为零. load: 加载数据[ ...
- HDLBITS笔记15:组合逻辑之7420芯片
由于组合逻辑电路中前面的部分过于简单,这里不做介绍.给出更多逻辑门(链接:Gates - HDLBits (01xz.net)的代码: module top_module( input a, b,ou ...
- HDLBITS笔记二创建4对1多路复用器
本练习是module_shift.现在,我们的模块端口不再是单个引脚,而是将矢量作为端口的模块,您将向其附加线矢量而不是普通线路.与Verilog中的其他任何地方一样,端口的矢量长度不必与连接到它的导 ...
- HDLBITS笔记五加法器减法器
加法器-减法器可以通过选择负掉其中一个输入来从加法器构建,这相当于反转输入然后加1.最终结果是一个可以执行两个操作的电路:(a + b + 0)和(a + ~b + 1). 在下面构建加法器-减法器. ...
- HDLBITS笔记34:Lemmings1、Lemmings2、Lemmings3、Lemmings4
目录 题目1:Lemmings1 题目2:Lemmings2 题目3:Lemmings3 题目4: Lemmings4 题目1:Lemmings1 游戏Lemmings涉及具有相当简单大脑的小动物.如 ...
- Verilog练习:HDLBits笔记15
四.Sequential Logic Finite State Machines 1.Simple FSM 1(asynchronous reset) Problem Statement: This ...
- HDLBITS笔记30:rule 90、rule 100以及Conway‘s game of life 16*16
目录 ## 题目1:rule 90规则90是具有有趣属性的一维元胞自动机. 题目2:rule 100 题目3:Conwaylife ## 题目1:rule 90 规则90是具有有趣属性的一维元胞自动机 ...
- HDLBITS笔记26:边沿检测(正边沿、任意边沿,边沿捕获寄存器、双边沿触发触发器)
在做接下来的题目前,首先需要理解什么是边沿检测. **边沿检测:**边沿指的是上升沿或者下降沿,检测指的是检测输入信号的变化,或者FPGA内部电路逻辑信号的跳变.在做边沿检测时,应该注意到复位信号,如 ...
- HDLBITS笔记35:独热编码状态机,ps/2数据包解析器,ps/2数据包和数据路径
目录 题目1:Fsm onehot(热编码的有限状态机) 题目2:Fsm ps2(ps/2数据包解析器) 题目3:Fsm ps2data(ps/2数据包解析器和数据路径) 题目1:Fsm onehot ...
最新文章
- java SSM多操作注解回滚
- 为什么阿里巴巴Java开发手册中不允许用Executors去创建线程池?
- 解决redis-cli连接时出现Could not connect to Redis at 127.0.0.1:6379: Connection refused
- java编译器jdk版本_以编程方式确定Java类的JDK编译版本
- 不用第三方插件如何统计自己wordpress的访问量
- 同包类 和 其他类 java_关于继承:为什么Java中的“protected”修饰符允许访问同一个包中的其他类?...
- mysql 范式化_MySQL-范式和反范式
- 拒绝做思想的巨人,行动上的矮子
- 每天晚上坚持喝一杯无糖燕麦会怎样?
- TensorFlow实现深度学习算法的教程汇集:代码+笔记
- C语言通过枚举网卡,API接口可查看man 7 netdevice--获取接口IP地址
- 树莓派 口罩识别 python_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记
- 360极速浏览器代理设置无效问题
- python做app接口测试_一种APP接口自动化测试方法与流程
- 【Scheme归纳】1 使用Edwin
- antony.net
- 谈谈人的视觉特性与电视的关系
- 护眼色的RGB值 和 颜色代码
- Gopher China 2019 讲师专访-Grab/地图团队资深架构师胡泊
- 哪个免费查重系统会更靠谱呢?