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

移位寄存器之右移位寄存器(Verilog HDL语言描述)目录背景测试一VerilogHDL语言描述测试代码仿真波形图测试二VerilogHDL语言描述测试代码仿真图ISE综合RTLSchematic测试三环形移位寄存器(右移)VerilogHDL描述测试代码仿真波形图ISE综合背景之所以单独把这个简单的东西拿出来,就是因为这个东西我可能要用到,不能眼高手低,以为简单就一…

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

目录

背景

测试一

Verilog HDL语言描述

测试代码

仿真波形图

测试二

Verilog HDL语言描述

测试代码

仿真图

ISE综合

RTL Schematic

测试三

环形移位寄存器(右移)

Verilog HDL描述

测试代码

仿真波形图

ISE综合


背景

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

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

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

测试一

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

Verilog HDL语言描述

//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

测试代码

//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语言描述)

测试二

如果需要右移3位,则

Verilog HDL语言描述

//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

测试代码

//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语言描述)

ISE综合

RTL Schematic

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

测试三

环形移位寄存器(右移)

Verilog HDL描述

//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

测试代码

//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语言描述)

ISE综合

RTL Schematic

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年7月16日 下午1:46
下一篇 2022年7月16日 下午1:46


相关推荐

  • Mybatis的resultMap和resultType区别

    Mybatis的resultMap和resultType区别resultMap 和 resultType 区别 resultMap 和 resultType 的功能类似 都是返回对象信息 但是 resultMap 要更好用一些 因为 resultMap 可以自定义 需要进行配置 字段名和实体类名称可以不相同 因为 resultMap 都可以映射出来 而 resultType 就必须要求字段名和实体类名称相同 二者不能同时存在 resultMap 对外部 resultMap 的引用属性 id type 子元素 id result association collectionre

    2026年3月19日
    1
  • 负载能力——影响负载能力思维导图整理

    我们在系统的开发和运维的时候,一定要了解自己现在系统的负载能力如何,这样在一些业务场景下,可以做到游刃有余,不会出现大的问题。下面就总结一些系统的负载能力,这个总结是我看到一篇好的博文内容整理出来的,我觉得很多知识可以用思维导图整理比较好一点,这样自己的思路清晰,而且对于记忆来说也比直接做笔记会深刻一点。

    2022年2月25日
    50
  • disruptor框架原理_disruptor使用

    disruptor框架原理_disruptor使用Disruptor源码https://github.com/LMAX-Exchange/disruptor/blob/master/README.mdhttps://github.com/LMAX-Exchange/disruptor/wiki/Introductionhttps://github.com/LMAX-Exchange/disruptor/wiki/Getting-Starte…

    2025年10月19日
    6
  • 简单剖析B树(B-Tree)与B+树

    简单剖析B树(B-Tree)与B+树注意 首先需要说明的一点是 B 树就是 B 树 没有所谓的 B 减树引言 我们都知道二叉查找树的查找的时间复杂度是 logN 其查找效率已经足够高了 那为什么还有 树和 树的出现呢 难道它两的时间复杂度比二叉查找树还小吗 答案当然不是 树和 树的出现是因为另外一个问题 那就是磁盘 众所周知 操作的效率很低 那么 当在大量数据存储中 查询时我们不能一下子将所有数据加载到

    2026年3月17日
    3
  • 6 个接私活的网站,你有技术就有钱!

    6 个接私活的网站,你有技术就有钱!公众号关注 GitHubDaily 设为 星标 每天带你逛 GitHub 大家好 我是发哥 很高兴跟大家再次见面 上周我在 GitHubDaily 公众号上发布了一篇文章 分享靠写

    2025年10月24日
    12
  • 使用rapidxml 生成xml文件[通俗易懂]

    使用rapidxml 生成xml文件[通俗易懂]rapidxml是一个快速的xml库,有C++

    2022年7月17日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号