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笔记-移位寄存器相关推荐

  1. HDLBITS笔记29:移位寄存器(包括4位移位寄存器,创建100位左/右旋转器,算术偏移,线性反馈移位寄存器等)

    题目1:4位移位寄存器(4-bit shift register) 构建一个具有异步复位.同步加载和使能功能的 4 位移位寄存器(右移位). reset:将移位寄存器重置为零. load: 加载数据[ ...

  2. HDLBITS笔记15:组合逻辑之7420芯片

    由于组合逻辑电路中前面的部分过于简单,这里不做介绍.给出更多逻辑门(链接:Gates - HDLBits (01xz.net)的代码: module top_module( input a, b,ou ...

  3. HDLBITS笔记二创建4对1多路复用器

    本练习是module_shift.现在,我们的模块端口不再是单个引脚,而是将矢量作为端口的模块,您将向其附加线矢量而不是普通线路.与Verilog中的其他任何地方一样,端口的矢量长度不必与连接到它的导 ...

  4. HDLBITS笔记五加法器减法器

    加法器-减法器可以通过选择负掉其中一个输入来从加法器构建,这相当于反转输入然后加1.最终结果是一个可以执行两个操作的电路:(a + b + 0)和(a + ~b + 1). 在下面构建加法器-减法器. ...

  5. HDLBITS笔记34:Lemmings1、Lemmings2、Lemmings3、Lemmings4

    目录 题目1:Lemmings1 题目2:Lemmings2 题目3:Lemmings3 题目4: Lemmings4 题目1:Lemmings1 游戏Lemmings涉及具有相当简单大脑的小动物.如 ...

  6. Verilog练习:HDLBits笔记15

    四.Sequential Logic Finite State Machines 1.Simple FSM 1(asynchronous reset) Problem Statement: This ...

  7. 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是具有有趣属性的一维元胞自动机 ...

  8. HDLBITS笔记26:边沿检测(正边沿、任意边沿,边沿捕获寄存器、双边沿触发触发器)

    在做接下来的题目前,首先需要理解什么是边沿检测. **边沿检测:**边沿指的是上升沿或者下降沿,检测指的是检测输入信号的变化,或者FPGA内部电路逻辑信号的跳变.在做边沿检测时,应该注意到复位信号,如 ...

  9. HDLBITS笔记35:独热编码状态机,ps/2数据包解析器,ps/2数据包和数据路径

    目录 题目1:Fsm onehot(热编码的有限状态机) 题目2:Fsm ps2(ps/2数据包解析器) 题目3:Fsm ps2data(ps/2数据包解析器和数据路径) 题目1:Fsm onehot ...

最新文章

  1. java SSM多操作注解回滚
  2. 为什么阿里巴巴Java开发手册中不允许用Executors去创建线程池?
  3. 解决redis-cli连接时出现Could not connect to Redis at 127.0.0.1:6379: Connection refused
  4. java编译器jdk版本_以编程方式确定Java类的JDK编译版本
  5. 不用第三方插件如何统计自己wordpress的访问量
  6. 同包类 和 其他类 java_关于继承:为什么Java中的“protected”修饰符允许访问同一个包中的其他类?...
  7. mysql 范式化_MySQL-范式和反范式
  8. 拒绝做思想的巨人,行动上的矮子
  9. 每天晚上坚持喝一杯无糖燕麦会怎样?
  10. TensorFlow实现深度学习算法的教程汇集:代码+笔记
  11. C语言通过枚举网卡,API接口可查看man 7 netdevice--获取接口IP地址
  12. 树莓派 口罩识别 python_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记
  13. 360极速浏览器代理设置无效问题
  14. python做app接口测试_一种APP接口自动化测试方法与流程
  15. 【Scheme归纳】1 使用Edwin
  16. antony.net
  17. 谈谈人的视觉特性与电视的关系
  18. 护眼色的RGB值 和 颜色代码
  19. Gopher China 2019 讲师专访-Grab/地图团队资深架构师胡泊
  20. 哪个免费查重系统会更靠谱呢?

热门文章

  1. 1253:抓住那头牛(数轴上的问题)
  2. Vue.config.productionTip = false的意思
  3. 适用于LeetCode的TypeScript编程调试环境
  4. python绘制国际象棋_用Python编写一个国际象棋AI程序
  5. 揭秘Unity3D科幻机甲网页游戏《星之战记》
  6. 阿米尔·侯赛因《终极智能》
  7. 基于MWORKS.Sysplorer的电子控制器应用案例——永磁同步电机FOC算法建模
  8. 机器人控制——PID参数整定
  9. 苹果Carplay详细介绍
  10. 高光谱图像处理学习笔记