4.3 移位寄存器的实现和应用
移位寄存器的實現(xiàn)和應用
- 0 74x194的介紹
- 1 74x194的實現(xiàn)
- 1.1 設計文件
- 1.2 仿真文件
- 1.2.1 仿真文件1
- 1.2.2 仿真文件2
- 1.3 仿真結(jié)果
- 1.3.1 仿真結(jié)果對q賦初值
- 1.3.2 未對q賦初值
- 2 使用74x194IP核實現(xiàn)11001序列發(fā)生器
- 2.1 分析
- 2.2 設計文件
- 2.3 仿真文件
- 2.4 約束文件
- 2.5 仿真結(jié)果
0 74x194的介紹
在數(shù)字電路中,移位寄存器(英語:shift register)是一種在若干相同時間脈沖下工作的以觸發(fā)器為基礎的器件,數(shù)據(jù)以并行或串行的方式輸入到該器件中,然后每個時間脈沖依次向左或右移動一個比特,在輸出端進行輸出。這種移位寄存器是一維的,事實上還有多維的移位寄存器,即輸入、輸出的數(shù)據(jù)本身就是一些列位。實現(xiàn)這種多維移位寄存器的方法可以是將幾個具有相同位數(shù)的移位寄存器并聯(lián)起來。
參考文檔74LS194\74HC194的功能表
74LS194計數(shù)器及其應用
一個D觸發(fā)器可以實現(xiàn)一個一位的寄存器,兩個觸發(fā)器可以實現(xiàn)一個兩位的寄存器,連接同一個時鐘
移位寄存器如下圖
1 74x194的實現(xiàn)
1.1 設計文件
module p_74x194(clk,clr_l,rin,lin,s,d,q ); input clk,clr_l,rin,lin; input [1:0] s; input [3:0] d; output [3:0] q; //reg [3:0] q=4'b0000; reg [3:0] q=4'b0000;//注意對其賦初值,因為后面會用它 always @ (posedge clk or negedge clr_l)begin if (clr_l==0) q<=0;else case (s)0:q<=q; //保持1:q<={rin,q[3:1]}; //右移2:q<={q[2:0],lin}; //左移3:q<=d; //裝載default q<=4'bx ;//不可能發(fā)生endcase /* else case (s)0:q<=q; //保持1:begin q[3]<=rin;q[2]<=q[3];q[1]<=q[2];q[0]<=q[1];end//右移2:begin q[3]<=q[2];q[2]<=q[1];q[1]<=q[0];q[0]<=lin;end//左移3:q<=d; //裝載default q<=4'bx ; endcase*/ end endmodule1.2 仿真文件
1.2.1 仿真文件1
//教材P99頁 module sim_p_74x194; reg clk = 0; reg clr_l = 1; reg rin = 0; reg lin = 1; reg [1:0] s = 3;//裝載3 reg [3:0] d = 4'b0101; wire [3:0] q; p_74x194 p_74x194_inst0(clk,clr_l,rin,lin,s,d,q);initial beginclk = 1'b0;#10clk = 1'b1;#10clk = 1'b0;s = 2'b10;//2左移#10clk = 1'b1;//第2個時鐘上升沿,執(zhí)行左移,左移后應q=4'b1011;#10clk = 1'b0;#10clk = 1'b1;//第3個時鐘上升沿,執(zhí)行左移,左移后應q=4'b0111;#10clk = 1'b0;#10clk = 1'b1;//第4個時鐘上升沿,執(zhí)行左移,左移后應q=4'b1111;#10clk = 1'b0;s = 2'b01;//右移endalways #10 clk = ~clk; endmodule1.2.2 仿真文件2
//自己編寫的測試文件 module sim_p_74x194( );reg clk,clr_l,rin,lin; reg [1:0] s; reg [3:0] d; wire [3:0] q; p_74x194 p_74x194_inst0(.clk(clk),.clr_l(clr_l),.rin(rin),.lin(lin),.s(s),.d(d),.q(q) );always #10 clk = ~clk;initial beginclk = 1'b0;clr_l = 1'b1;rin = 1'b0;lin = 1'b1;s = 2'b11;d = 4'b0101;#30s = 2'b10;#60s = 2'b01;end endmodule1.3 仿真結(jié)果
1.3.1 仿真結(jié)果對q賦初值
reg [3:0] q=4’b0000;
將結(jié)果轉(zhuǎn)換成二進制,便于觀察
1.3.2 未對q賦初值
將結(jié)果轉(zhuǎn)換成二進制,便于觀察
2 使用74x194IP核實現(xiàn)11001序列發(fā)生器
2.1 分析
所有反饋邏輯是
74x194的連接
2.2 設計文件
1.先把IP核添加進來,點擊Settings 在彈出的窗口中選 擇點擊左側(cè)的IP圖標點擊庫管理(Repository Manager)頁框在庫管理頁框中點擊“+”圖標增加IP目錄
2.選擇設計好了的p_74x194工程目錄,目錄被加載進來,有一個IP
3.點擊流程導航下工程項下的IP目錄( IP Catalog),就可以看見剛剛添加的“p_74x194_0”IP核 。
4.雙擊p_74x194_0 彈出IP窗口??梢钥吹皆揑P核的邏輯符號如圖所示。這個窗口可以用來編輯IP實例組件的名稱。點擊ok實例化IP,例化成功后
2.3 仿真文件
與4.1 時鐘同步狀態(tài)機的設計中的seq_11001_1仿真文件一樣
module sim_seq_11001_3( );reg clk;wire led;seq_11001_3 seq_11001_3_inst0( .clk(clk),.led(led));initial beginclk = 0;endalways #10 clk =~clk; endmodule2.4 約束文件
## clk set_property PACKAGE_PIN D4 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports clk] ##led set_property PACKAGE_PIN P9 [get_ports {led}] set_property IOSTANDARD LVCMOS33 [get_ports {led}]2.5 仿真結(jié)果
總結(jié)
以上是生活随笔為你收集整理的4.3 移位寄存器的实现和应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 南京师范大学计算机控制系统,基于计算机软
- 下一篇: kubernetes HPA使用及测试