实验14:移位寄存器

2023-10-11  
  • (1)熟悉和掌握开发流程和软件使用方法;
  • (2)通过实验理解和掌握原理;
  • (3)学习用行为级描述时序逻辑电路

本实验的任务是设计一个7位右移并行输入、串行输出的。

本文引用地址:

如果将多个触发器级联就构成一个多位的,如下图所示,是以4位移位寄存器为例的逻辑电路图,其中的LD/SHIFT是一个置数/移位控制信号。当LD/SHIFT为1时,在CP作用下,从输入端A、B、C、D并行接收数据;当LD/SHIFT为0时,在CP作用下,将寄存器中的数据顺序移出,空位由输入端SIN补充。这种寄存器常用来进行并行数据到串行数据的转换。


7位移位寄存器程序清单 shift7.v

 module shift7(input wire clk,           //输入时钟input wire rst,			  //复位信号input wire [6:0] datain,  //并行输入数据output wire  dataout 	  //串行输出数据); reg [6:0] data; always @(posedge clk)
	if(!rst)
		data <= datain;			//同步复位,复位时并行数据存入变量data
	else
		begin
			data[6] <= 1'b0;		//最高为补0
			data[5] <= data[6];
			data[4] <= data[5];
			data[3] <= data[4];
			data[2] <= data[3];
			data[1] <= data[2];
			data[0] <= data[1];     //右移一位
		end assign dataout = data[0];		//串行输出 endmodule

仿真文件shift_tb.v

 `timescale 1ns/100ps    //仿真时间单位/时间精度module shift7_tb;	reg clk, rst;       //需要产生的激励信号定义reg [6:0]datain;    wire dataout;       //需要观察的输出信号定义initial
	begin
		clk =0;
		rst =1;
		datain =7'b1110101;   //所需移位数据
		#50
		rst =0;
		#100
		rst =1;
	endalways #20 clk =~clk;     //产生时钟信号 频率25MHz//module调用例化格式shift7 u1 (
				.clk	(clk),
				.rst	(rst),
				.datain	(datain),
				.dataout(dataout)
			);endmodule
  1. 仿真结果如下图所示:
  2. 实验现象:从仿真波形可以看出,当rst低有效时,输出dataout在每一个clk上升沿将datain的数据从低位到高位(右移)依次输出。
文章来源于:电子产品世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。