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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值