zoukankan      html  css  js  c++  java
  • 【连载】 FPGA Verilog HDL 系列实例双向移位寄存器

    【连载】 FPGA Verilog HDL 系列实例  

    Verilog HDL 之 双向移位寄存器

    一、原理

      前一个实验设计的寄存器只有寄存数据和代码的功能。有时为了处理数据,需要将寄存器中的各位数据在移位控制信号的作用下,依次向高位或是低位移动移位。具有移位功能的寄存器称为移位寄存器。
      本实验就是设计一个双向的移位寄存器,该寄存器可以对4位信号串行输入的数据进行移动输出。另外,该寄存器还有一个异步清零端,低电平有效。还有一个load装载数据的信号输入,用于预置数据,还有一个控制左移或是右移的信号输入,其功能表如表1.1所示。

                  表1.1    双向移位寄存器功能表

    二、实现

    在设计文件中输入Verilog代码

     1 `timescale 1 ns / 1 ps
    2
    3 module shiftdata ( left_right ,load ,clr ,clk ,DIN ,DOUT );
    4
    5 input left_right ;
    6 wire left_right ;
    7 input load ;
    8 wire load ;
    9 input clr ;
    10 wire clr ;
    11 input clk ;
    12 wire clk ;
    13 input [3:0] DIN ;
    14 wire [3:0] DIN ;
    15
    16 output [3:0] DOUT ;
    17 wire [3:0] DOUT ;
    18 reg [3:0] data_r;
    19
    20 assign DOUT = data_r ;
    21
    22 always @ ( posedge clk or posedge clr or posedge load )
    23 begin
    24 if ( clr == 1)
    25 data_r <= 0;
    26 else if (load )
    27 data_r <= DIN;
    28 else begin
    29 if ( left_right)
    30 begin
    31 data_r <= (data_r<<1);
    32 data_r[0] <= 0;
    33 end
    34 else begin
    35 data_r <= (data_r>>1);
    36 data_r[3] <= 0;
    37 end
    38 end
    39 end
    40
    41 endmodule
  • 相关阅读:
    JS 给li标签下所有a标签添加点击事件并添加和删除样式
    Linux简介及常用命令
    简易计算器
    登陆窗口小项目
    时间工具类
    String类的常用方法(附带练习)
    java-自定义异常
    Java小练习
    Java-接口练习1
    动态加载js
  • 原文地址:https://www.cnblogs.com/kongtiao/p/2151849.html
Copyright © 2011-2022 走看看