新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 實(shí)驗(yàn)14:移位寄存器

實(shí)驗(yàn)14:移位寄存器

作者: 時(shí)間:2023-10-11 來源:電子森林 收藏

本實(shí)驗(yàn)的任務(wù)是設(shè)計(jì)一個(gè)7位右移并行輸入、串行輸出的

本文引用地址:http://2s4d.com/article/202310/451354.htm

如果將多個(gè)觸發(fā)器級(jí)聯(lián)就構(gòu)成一個(gè)多位的,如下圖所示,是以4位移位寄存器為例的邏輯電路圖,其中的LD/SHIFT是一個(gè)置數(shù)/移位控制信號(hào)。當(dāng)LD/SHIFT為1時(shí),在CP作用下,從輸入端A、B、C、D并行接收數(shù)據(jù);當(dāng)LD/SHIFT為0時(shí),在CP作用下,將寄存器中的數(shù)據(jù)順序移出,空位由輸入端SIN補(bǔ)充。這種寄存器常用來進(jìn)行并行數(shù)據(jù)到串行數(shù)據(jù)的轉(zhuǎn)換。


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

 module shift7(input wire clk,           //輸入時(shí)鐘input wire rst,			  //復(fù)位信號(hào)input wire [6:0] datain,  //并行輸入數(shù)據(jù)output wire  dataout 	  //串行輸出數(shù)據(jù)); reg [6:0] data; always @(posedge clk)
	if(!rst)
		data <= datain;			//同步復(fù)位,復(fù)位時(shí)并行數(shù)據(jù)存入變量data
	else
		begin
			data[6] <= 1'b0;		//最高為補(bǔ)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    //仿真時(shí)間單位/時(shí)間精度module shift7_tb;	reg clk, rst;       //需要產(chǎn)生的激勵(lì)信號(hào)定義reg [6:0]datain;    wire dataout;       //需要觀察的輸出信號(hào)定義initial
	begin
		clk =0;
		rst =1;
		datain =7'b1110101;   //所需移位數(shù)據(jù)
		#50
		rst =0;
		#100
		rst =1;
	endalways #20 clk =~clk;     //產(chǎn)生時(shí)鐘信號(hào) 頻率25MHz//module調(diào)用例化格式shift7 u1 (
				.clk	(clk),
				.rst	(rst),
				.datain	(datain),
				.dataout(dataout)
			);endmodule
  1. 仿真結(jié)果如下圖所示:
  2. 實(shí)驗(yàn)現(xiàn)象:從仿真波形可以看出,當(dāng)rst低有效時(shí),輸出dataout在每一個(gè)clk上升沿將datain的數(shù)據(jù)從低位到高位(右移)依次輸出。


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉