前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >移位寄存器之右移位寄存器(Verilog HDL语言描述)

移位寄存器之右移位寄存器(Verilog HDL语言描述)

作者头像
全栈程序员站长
发布2022-09-13 10:06:38
1.1K0
发布2022-09-13 10:06:38
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

目录

背景

测试一

Verilog HDL语言描述

测试代码

仿真波形图

测试二

Verilog HDL语言描述

测试代码

仿真图

ISE综合

RTL Schematic

测试三

环形移位寄存器(右移)

Verilog HDL描述

测试代码

仿真波形图

ISE综合


背景

之所以单独把这个简单的东西拿出来,就是因为这个东西我可能要用到,不能眼高手低,以为简单就一眼带过,之后,用的时候就不能快速地拿出来,处于这个简单的目的,这个知识点贴出来遛遛。

之所以强调非环形移位,很简单,我不想让它具有环形移位的功能呗,我不需要,需要的时候直接改一行代码即可。

以一个位宽为10的右移位寄存器为例吧(解读ADC采样芯片(EV10AQ190A)的采样(工作)模式(双通道模式)这篇博文中用到的ADC芯片采样数据就是10位的,这里是有实际背景的!)

测试一

这种移位寄存器,给一个输入数据之后,在一个时钟上升沿到来时,输出等于输入右移1位,高位补零,然后如果没有输入数据的话,输出就不在变化了,直到又给一个输入,然后时钟上升沿到来时,输入信号右移1位作为输出,如此下去。

Verilog HDL语言描述

代码语言:javascript
复制
//10 bit right shift register
module register(clk, din, dout);

input clk;
input [9:0] din;
output [9:0] dout;
reg [9:0] dout;

always@(posedge clk)
begin
	dout <= {1'b0, din[9:1]};
end


endmodule

测试代码

代码语言:javascript
复制
//testbench file for 10 bit right shift register
`timescale 1ns/1ps
module register_tb;

reg clk;
reg [9:0] din;
wire [9:0] dout;

//clock generation of period 20 ns
always
begin
	#10 clk = ~clk;
end

//initialization
initial
begin
	clk = 1'b0;
	din = 10'b0010110110;
	#200 din = 10'b1110001010;
end

register u1(.clk(clk),.din(din), .dout(dout));


endmodule

仿真波形图

移位寄存器之右移位寄存器(Verilog HDL语言描述)
移位寄存器之右移位寄存器(Verilog HDL语言描述)

测试二

如果需要右移3位,则

Verilog HDL语言描述

代码语言:javascript
复制
//10 bit right shift register
module a(clk, din, dout);

input clk;
input [9:0] din;
output [9:0] dout;
reg [9:0] dout;

always@(posedge clk)
begin
	dout <= {3'b000, din[9:3]};
end


endmodule

测试代码

代码语言:javascript
复制
//testbench file for 10 bit right shift register
`timescale 1ns/1ps
module register_tb;

reg clk;
reg [9:0] din;
wire [9:0] dout;

//clock generation of period 20 ns
always
begin
	#10 clk = ~clk;
end

//initialization
initial
begin
	clk = 1'b0;
	din = 10'b0010110110;
	#200 din = 10'b1110001010;
end

register u1(.clk(clk),.din(din), .dout(dout));


endmodule

仿真图

移位寄存器之右移位寄存器(Verilog HDL语言描述)
移位寄存器之右移位寄存器(Verilog HDL语言描述)

ISE综合

RTL Schematic

移位寄存器之右移位寄存器(Verilog HDL语言描述)
移位寄存器之右移位寄存器(Verilog HDL语言描述)

测试三

环形移位寄存器(右移)

Verilog HDL描述

代码语言:javascript
复制
//10 bit right shift register
module register(clk, din, dout);

input clk;
input [9:0] din;
output [9:0] dout;
reg [9:0] dout;

always@(posedge clk)
begin
	dout <= {din[0], din[9:1]};
end


endmodule

测试代码

代码语言:javascript
复制
//testbench file for 10 bit right shift register
`timescale 1ns/1ps
module register_tb;

reg clk;
reg [9:0] din;
wire [9:0] dout;

//clock generation of period 20 ns
always
begin
	#10 clk = ~clk;
end

//initialization
initial
begin
	clk = 1'b0;
	din = 10'b0010110110;
	#200 din = 10'b1110001010;
end

register u1(.clk(clk),.din(din), .dout(dout));


endmodule

仿真波形图

移位寄存器之右移位寄存器(Verilog HDL语言描述)
移位寄存器之右移位寄存器(Verilog HDL语言描述)

ISE综合

RTL Schematic

移位寄存器之右移位寄存器(Verilog HDL语言描述)
移位寄存器之右移位寄存器(Verilog HDL语言描述)

事实上,我以前做过移位寄存器的总结:移位寄存器专题

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160258.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 测试一
    • Verilog HDL语言描述
      • 测试代码
        • 仿真波形图
        • 测试二
          • Verilog HDL语言描述
            • 测试代码
              • 仿真图
                • ISE综合
                  • RTL Schematic
                  • 测试三
                    • 环形移位寄存器(右移)
                      • Verilog HDL描述
                      • 测试代码
                      • 仿真波形图
                      • ISE综合
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档