移位寄存器之右移位寄存器(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语言描述)

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ubuntu更新源报错_cydia更新软件源很慢

    ubuntu更新源报错_cydia更新软件源很慢错误我在Ubuntu上的/etc/apt/sources.list加入源后执行sudoapt-getupdate出现下图错误:原因在sources.list文件中加入了非ubuntu官方源,所以认为加入源是不可信任的。解决方法导入该源公钥。E084DAB9为上图中公钥后八位gpg–keyserverkeyserver.ubuntu.com-

    2022年10月13日
  • JavaScript数组_java数组排序

    JavaScript数组_java数组排序JavaScript数组常用方法(最全)今天我们对JavaScript的数组以及对象的方法做一个总结,方便与以后的开发与查询,多多收藏哦!1.push()push方法可以向数组的末尾添加一个或者多个元素,并返回新的长度.2.pop()pop()方法用于删除并返回数组的最后一个元素。3.unshift()unshift()方法可向数组的开头添加一个或更多元素,并返回新的长度。4.shift()shift()方法用于把数组的第一个元素从其中删除,并返回第一

    2022年10月26日
  • PowerShell应用之-事务复制

    PowerShell应用之-事务复制

  • intentservice使用(Intention)

    IntentService,更好用的Service说起IntentService就需要先了解一下Service。Service是长期运行在后台的应用程序组件。Service不是一个单独的进程,它和应用程序在同一个进程中,Service也不是一个线程,它和线程没有任何关系,所以它不能直接处理耗时操作。如果直接把耗时操作放在Service的onStartCommand()中,…

  • PhpStorm中如何使用Xdebug工具,入门级操作方法

    PhpStorm中如何使用Xdebug工具,入门级操作方法

    2021年10月14日
  • python正则匹配汉字「建议收藏」

    python正则匹配汉字的规则为:[\u4e00-\u9fa5]后面可以加一个+,匹配多个汉字。例子如下:print(re.findall(r'[\u4e00-\u9fa5]+’,’这是测试用例’))

发表回复

您的电子邮箱地址不会被公开。

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