-
8位并行输入串行输出的移位寄存器的Verilog描述
2020-04-24 21:13:081 Verilog描述 module shift_p2s( input clk, input [7:0] din, input load, output reg q ); reg [7:0] tmp; always@(posedge clk)begin if(load == 1...1 Verilog描述
module shift_p2s(
input clk,
input [7:0] din,
input load,
output reg q
);
reg [7:0] tmp;
always@(posedge clk)begin
if(load == 1'b1)
tmp <= din;
else begin
q <= tmp[7];
tmp <= {tmp[6:0],1'b0};
end
endendmodule
2 RTL视图
3 功能仿真
-
试用D触发器和必要的门电路(或最小数量的中规模集成电路芯片)设计两位串行输入、并行输出双向移位寄存器....
2020-01-06 11:40:24题: 试用D触发器和必要的门电路(或最小数量的中规模集成电路芯片)设计两位串行输入、并行输出双向移位寄存器. 寄存器有X、K两个输入端, K控制移位方向, X输入数据. K=0时, 寄存器数据从高位移向低位, X往寄存器高位...题: 试用D触发器和必要的门电路(或最小数量的中规模集成电路芯片)设计两位串行输入、并行输出双向移位寄存器. 寄存器有X、K两个输入端, K控制移位方向, X输入数据. K=0时, 寄存器数据从高位移向低位, X往寄存器高位送数据; K=1时, 寄存器数据从低位移向高位, X往寄存器低位送数据.
解析:
根据题目的描述, 得到对应的状态表.
状态表 K X Q0* Q1* 功能 0 0 Q1 0 左移 0 1 Q1 1 左移 1 0 0 Q0 右移 1 1 1 Q0 右移 根据状态表, 得到状态激励表.
状态激励表 K X D0 D1 功能 0 0 Q1 0 左移 0 1 Q1 1 左移 1 0 0 Q0 右移 1 1 1 Q0 右移 这里为了提升电路设计的效率, 用一片74153的两个输出分别实现D0和D1的逻辑表达式.
根据上面的分析, 绘制电路的原理图.
-
移位寄存器及verilog实现 并行输入串行输出
2020-02-20 21:36:00移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、分频,构成序列码发生器、序列码检测器,进行数值运算以及数据处理等,它也是...1 概念
移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、分频,构成序列码发生器、序列码检测器,进行数值运算以及数据处理等,它也是数字系统中应用非常广泛的时序逻辑部件之一。
有四种不同类型的移位寄存器可用数据输入和输出设备的方式不同:
串行输入,串行输出
串行输入,并行输出
并行输入,串行输出
并行输入,并行输出
右移位寄存器的特点是右边寄存器的次态等于左边触发器的现态。串行输出数据从触发器FD的QD端输出,并行数据从个触发器的QA~QD端输出,两种输出方式都属于同向输出。各触发器都采用同一时钟信号,所以它们工作在同步状态。如果将FD的输出端QD接到FA的输入端DI,则可以构成循环移位的右移位寄存器。右移寄存器
并行输入串行输出
module right_shift_pin_sout( clk , rst_n , //其他信号,举例dout sout, pin ); //参数定义 parameter DATA_W = 4; parameter CNT_W=2; //输入信号定义 input clk ; input rst_n ; input [DATA_W-1: 0] pin ; //输出信号定义 output sout ; //中间信号定义 reg[CNT_W-1: 0] cnt ; wire [DATA_W-1: 0] D ; reg [DATA_W-1: 0] Q ; //计数 always@(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin cnt<=0; end else begin if(cnt==DATA_W-1)begin cnt<=0; end else begin cnt<=cnt+1; end end end //D assign D=(cnt==0)?pin:4'b0; assign sout=Q[3]; //sout always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin sout<=0; end else begin sout<=Q[3]; end end //Q always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin Q<=0; end else if(cnt==0)begin Q<=D; end else begin Q[3:1]<=Q[2:0]; end end endmodule
tb
`timescale 1 ns/1 ns module testbench_name(); parameter DATA_W = 4; parameter CNT_W=2; //时钟和复位 reg clk ; reg rst_n; wire sout; reg[DATA_W-1: 0] pin ; //时钟周期,单位为ns,可在此修改时钟周期。 parameter CYCLE = 20; //复位时间,此时表示复位3个时钟周期的时间。 parameter RST_TIME = 3 ; //待测试的模块例化 right_shift_pin_sout #(.DATA_W(DATA_W),.CNT_W(CNT_W)) uut( .clk ( clk ), .rst_n ( rst_n ), .sout ( sout ), .pin ( pin ) ) ; //生成本地时钟50M initial begin clk = 0; forever #(CYCLE/2) clk=~clk; end //产生复位信号 initial begin rst_n = 1; #2; rst_n = 0; #(CYCLE*RST_TIME); rst_n = 1; end //输入信号pin赋值方式 initial begin #1; //赋初值 pin =4'b1111; #(9*CYCLE); pin=4'b1000; #(9*CYCLE); pin=4'b0010; #(9*CYCLE); pin=4'b0001; //开始赋值 end endmodule
-
ME2604:16位串行输入/并行输出恒流LED 显示面板驱动
2021-01-19 19:51:17它内建的CMOS位移寄存器与锁存功能,可以将串行的输入数据转换成平行输出数据格式。芯片的输入电压范围值为3.3伏特至5伏特,提供16个恒定电流源,可以在每个输出级提供 3-45mA 的恒定电流量以驱动 LED。 特点: ... -
显示/光电技术中的ME2604:16位串行输入/并行输出恒流LED 显示面板驱动
2020-11-03 19:16:00它内建的CMOS位移寄存器与锁存功能,可以将串行的输入数据转换成平行输出数据格式。芯片的输入电压范围值为3.3伏特至5伏特,提供16个恒定电流源,可以在每个输出级提供 3-45mA 的恒定电流量以驱动 LED。 特点: ... -
移位寄存器专题(verilog HDL设计)
2018-05-19 21:09:113、串行输入并行输出寄存器 4、并行输入串行输出移位寄存器 移位寄存器简介 移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、...目录
移位寄存器简介
移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、分频,构成序列码发生器、序列码检测器,进行数值运算以及数据处理等,它也是数字系统中应用非常广泛的时序逻辑部件之一。
分类
移位寄存器按数据移位方向可以分为左移寄存器、右移寄存器、也可以根据数据输入、输出方式分为并行输入/串行输出、串行输入/并行输出、串行输入/串行输出、并行输入/并行输出。
4位右移位寄存器工作原理
下图是一个4位右移位寄存器的逻辑电路图。其工作原理为:串行数据从触发器
的
端输入,触发器FA的状态方程为:
。其余触发器的状态方程分别为
,
,
。可见,右移位寄存器的特点是右边寄存器的次态等于左边触发器的现态。串行输出数据从触发器FD的QD端输出,并行数据从个触发器的QA~QD端输出,两种输出方式都属于同向输出。各触发器都采用同一时钟信号,所以它们工作在同步状态。如果将FD的输出端QD接到FA的输入端DI,则可以构成循环移位的右移位寄存器。
4位右移位寄存器逻辑电路
1、 16位右移位寄存器
下面描述的是一个位宽为16位的右移位寄存器,实际具有环形移位的功能,是在右移位寄存器的基础上将最低位的输出端接到最高位的输入端构成的。其功能为当时钟上升沿到达时,输入信号的最低位移位到最高位,其余各位依次向右移动一位。
其verilog HDL设计代码如下:
1. module register_right(clk, din, dout); 2. input clk; 3. input [15:0] din; 4. output [15:0] dout; 5. reg [15:0] dout; 6. 7. always @(posedge clk) 8. begin 9. dout <= {din[0], din[15:1]}; 10. end 11. endmodule
其测试文件为:
1. `timescale 1ns/1ps 2. module register_right_tb; 3. reg clk; 4. reg [15:0] din; 5. wire [15:0] dout; 6. always 7. begin 8. #10 clk = ~clk; 9. end 10. initial 11. begin 12. clk = 1'b0; 13. din = 16'b0000_0000_0000_0000; 14. #10 din = 16'b0000_0000_0000_1011; 15. #20 din = 16'b0000_0000_0111_0000; 16. #20 din = 16'b0000_0000_0000_0011; 17. #100; 18. end 19. register_right U1(.clk(clk), .din(din), .dout(dout)); 20. 21. endmodule
在Modelsim中仿真得到的波形图如下:
2、 16位左移寄存器
同右移位寄存器原理一致,下面直接给出verilog HDL 设计代码:
1. module register_left(clk, din, dout); 2. input clk; 3. input [15:0] din; 4. output [15:0] dout; 5. reg [15:0] dout; 6. 7. always @(posedge clk) 8. begin 9. dout <= {din[14:0], din[15]}; 10. end 11. endmodule
测试文件为:
1. `timescale 1ns/1ps 2. module register_left_tb; 3. reg clk; 4. reg [15:0] din; 5. wire [15:0] dout; 6. 7. always 8. #10 clk = ~clk; 9. 10. initial 11. begin 12. clk = 1'b0; 13. din = 16'b0000_0000_0000_0000; 14. #10 din = 16'b0000_0000_0000_0011; 15. #20 din = 16'b0000_0000_0011_0000; 16. #100; 17. end 18. 19. register_left U1(.clk(clk), .din(din), .dout(dout)); 20. endmodule
在Modelsim中仿真所得波形图如下:
3、 串行输入并行输出寄存器
下面描述一个位宽为8的串行输入并行输出的寄存器,其实现的功能为:1位数据的串行输入,8位数据的并行输出。当时钟上升沿到达时,1位输入数据din进入qtemp的最低位,qtemp的其余各位依次向左移动1位,在assign 赋值语句中,将qtemp连续赋值给dout,实现8位的数据并行输出。
其verilog HDL设计代码为:
1. module left_shifter_reg(clk, din, dout); 2. input clk; 3. input din; 4. output [7:0] dout; 5. wire [7:0] dout; 6. reg [7:0] qtemp; 7. always @ (posedge clk) 8. begin 9. qtemp <= {qtemp[6:0], din}; //每次输入一位 10. end 11. assign dout = qtemp; //并行输出 12. 13. endmodule
测试文件为:
1. module left_shifter_reg_tb; 2. reg din; 3. reg clk; 4. wire [7:0] dout; 5. 6. always 7. #10 clk = ~clk; 8. 9. initial 10. begin 11. clk = 1'b0; 12. #100 din = 1'b1; 13. #100 din = 1'b1; 14. #100 din = 1'b0; 15. end 16. 17. left_shifter_reg U1(.din(din), .clk(clk), .dout(dout)); 18. endmodule
在Modelsim中仿真所得波形图:
4、 并行输入串行输出移位寄存器
下面描述一个位宽为8的并行输入串行输出的寄存器,其实现的功能为:当使能端 en = 1时,将输入数据din存入一个8位的中间变量,然后在每个时钟上升沿到来时,将qtemp的最低端输出,然后再将qtemp右移一位,从而实现将din输入数据从最低位到最高位依次串行输出。
其verilog HDL设计代码为:
1. module right_shifter_reg(clk, en, din, dout); 2. input [7:0] din; 3. input en,clk; 4. output dout; 5. reg dout; 6. reg [7:0] qtemp; 7. always @(posedge clk) 8. begin 9. if(en == 1) 10. qtemp <= din; 11. else 12. begin 13. dout <= qtemp[0]; 14. qtemp <= {qtemp[0], qtemp[7:1]}; 15. end 16. end 17. 18. endmodule
测试文件为:
1. `timescale 1ns/1ps 2. module right_shifter_reg_tb; 3. reg [7:0] din; 4. reg clk; 5. reg en; 6. wire dout; 7. 8. always 9. #10 clk = ~clk; 10. 11. initial 12. begin 13. clk = 0; 14. en = 1'b0; 15. #10 en = 1'b1; 16. din = 8'b1110_0010; 17. #20 en = 1'b0; 18. #100; 19. end 20. right_shifter_reg U1(.clk(clk), .en(en), .din(din), .dout(dout)); 21. 22. endmodule
在Modelsim中仿真所得波形图如下:
-
8位并行左移串行转换电路_移位寄存器
2020-12-29 09:08:06(5) 保持:寄存器予置任意4位二进制数码abcd,令=1,S1=S0=0,加CP脉冲,...1.实现数据的串、并行转换(1)串行输入、并行输出按图8-3-3-3接线,进行右移串入、并出实验,串入数码自定;改接线路用左移方式实现并... -
8位并行左移串行转换电路_串行/并行转换的具体过程如下 - 移位寄存器的作用及应用...
2020-12-29 09:08:12当第一个CP脉冲到来后,寄存器的输出状态Q0~Q7为01111111,与此同时S1S0变为01,转换电路变为执行串入右移工作方式,串行输入数据由1片的SR端加入。随着CP脉冲的依次加入,输出状态的变化可列成表7-3所示。由表7-... -
串行移位锁存并行输出可级联器件74HC595
2016-10-19 10:02:00一、背景 老同学今天突然咨询关于74HC595,自己没用过,同学说可以级联10级!... 74HC595为1个8位串行移位输入寄存器带1个存储寄存器,并可8位带锁存并行输出。串行移位输入寄存器 和存储寄存器分别有独自的时钟... -
串行工作模式之同步移位寄存器的输入输出方式
2014-07-20 16:36:04串行工作模式之同步移位寄存器的输入输出方式 主要用于扩展并行输入或输出口。数据有RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接受均为8位数据。低位在前,高位在后。 //串行口... -
74HC595 - 串行转并行
2020-07-14 17:44:36移位寄存器存储串行输入的数据,锁存寄存器锁存移位寄存器内的数据。 1)SHIFT CLOCK:移位时钟输入引脚,上升沿将数据串行输入; 2)SERIAL DATA INPUT:串行数据输入引脚; 3)RESET:清空移位寄存器中数据,低电平有效... -
单片机应用系统设计技术——串行口方式0 拓展并行输出端口 02 74LS164芯片
2020-04-29 18:16:1674HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。 数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接... -
verilog 计数器_verilog 串行转并行
2020-12-14 13:26:52串行输入,并行输出,每8bit为一个字节输出。使用3位寄存器cnt作为计数器,计数到7之后,cnt+1变成0;输出字节时,需要进行判断。cnt = 1时,写入1位;cnt = 7时,写入了7位,所以cnt = 0输出字节。verilog 代码如下... -
并行存取的移位寄存器的设计
2020-12-10 00:08:144.能够右移串行输入、并行输出(串并转换); 5.能够并行输入、右移串行输出(并串转换)。 相关知识 寄存器(Register)的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位... -
(九)串行口方式0 拓展并行输出端口 02 74LS164芯片
2015-12-27 11:48:0074HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。 数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接... -
移位寄存器与寄存器组
2019-11-26 11:36:55移位寄存器(shift_reg) 在数字电路中,移位寄存器是一种在...根据移位数据的输入-输出方式,又可将它分为串行输入-串行输出、串行输入-并行输出、并行输入-串行输出和并行输入-并行输出四种电路结构。 移位寄... -
具有串行并行数据转换功能的是_74ls194串行数据到并行数据的转换
2021-02-01 15:38:45移位寄存器是指寄存器中所存的代码能够在移位脉冲的作用下...Q0~Q3为并行输出端;SR--右移串引输入端;SL--左移串引输入端;S1、S0-操作模式控制端; -为直接无条件清零端;CP-为时钟脉冲输入端。74LS194功能特征根据... -
uboot无法操作寄存器接口_计算机组成:几种标准输入/输出接口的外部接口
2020-12-03 09:46:58几种标准外部接口输入/输出接口与主机内部所有模块的连接是通过计算机的系统总线完成的,接口与外部设备连接的部分则是系统总线通过接口向外的延伸,它是采用标准的接口实现连接的。通常,称它为外部接口。相对内部... -
8位并行左移串行转换电路_74ls194串行数据到并行数据的转换
2020-12-17 20:00:02移位寄存器是指寄存器中所存的代码能够在移位脉冲的作用下...Q0~Q3为并行输出端;SR--右移串引输入端;SL--左移串引输入端;S1、S0-操作模式控制端; -为直接无条件清零端;CP-为时钟脉冲输入端。74LS194功能特征根据... -
串行加法器 并行加法器 超前进位加法器
2018-03-27 14:05:551.串行加法器串行加法器即加法器执行位串行行操作,利用多个时钟周期完成一次加法运算,即输入操作数和输出结果方式为随时钟串行输入/输出。位并行加法器速度高,但是占用资源多。在许多实际应用中并不需要这样高的... -
串并转换寄存器
2020-10-29 11:24:19以1位串行输入/8位并行输出为例,当时钟沿来临时,将1位输入数据存入临时寄存器–Qtemp的最低位,Qtemp的[6:0]向左移动1位,用连续赋值语句,将Qtemp中的值赋给输出Q,实现8位数据的并行输出。 2.并行输入/串行输出 ... -
寄存器和ioremap的使用
2020-12-21 17:14:33移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。 2.寄存器的大小... -
移位寄存器
2020-12-09 01:57:52移位寄存器是暂时存放数据的部件,同时它还具有移位功能。 一、特点和分类 从逻辑结构上看,移位寄存器...移位寄存器的数据输入方式有串行输入和并行输入之分。串行输入就是在时钟脉冲作用下,把要输入的数据从一个 -
单片机C语言程序设计:串行数据转换为并行数据
2020-08-28 19:16:50说明:串行数据由 RXD 发送给串 并转换芯片 74164,TXD 则用于输出移位时钟脉冲,74164 将串行输入的 1 字节转换为并行数据,并将转换的数据通过 8 只 LED 显示出来。本例串口工作模式 0,即移位寄存器 I/O 模式。 -
74ls595 (8位输出锁存移位寄存器)的使用方法
2012-02-10 11:45:04QA--QH: 八位并行输出端,可以直接控制数码管的8个段。 QH': 级联输出端。我将它接下一个595的SI端。 SI: 串行数据输入端。 74595的控制端说明: /SCLR(10脚): 低点平时将移位寄存器的数据 -
74HC165并行数据转串行数据
2012-11-21 00:53:4474HC165 概述 (NXP founded by Philips) ...74HC165是8位并行读取或串行输入移位寄存器,可在末级得到互斥的串行输出(Q7和Q7),当并行读取(PL)输入为低时,从D0到D7口输入的并行数据将被异步地读取进寄存器内。 -
8位并行左移串行转换电路_51单片机串行口的工作方式解析
2020-12-13 15:13:21工作时,数据从RXD串行地输入/输出,TXD输出移位脉冲,使外部的移位寄存器移位。波特率固定为fosc/12(即,TXD每机器周期输出一个同位脉冲时,RXD接收或发送一位数据)。每当发送或接收完一个字节,硬件置TI=1或RI=1,...
-
非线性Tavis-Cummings模型的Berry相位
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
MySQL Router 实现高可用、负载均衡、读写分离
-
从HelloWorld说程序运行机制
-
使用差分进化快速检测人类
-
npm nanoid——随机数使用
-
4_6_2归并排序递归140
-
Java中的Set
-
SpringContextUtils
-
Python内存问题:提示和技巧
-
电商PC前后端分离项目Spring Boot后台实战第一期
-
LeetCode | 0623. 在二叉树中增加一行【Python】
-
i5 11600k和i5 10600k的区别 i5 10600k比i5 11600k差多少
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
七:php安装swoole插件
-
2021-02-25
-
jlink-v8 固件.zip
-
2021-02-25
-
自主机器人软件技术
-
Sierpinski分形结构的太赫兹透射光谱特性研究