日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4.3 移位寄存器的实现和应用

發(fā)布時間:2024/3/12 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4.3 移位寄存器的实现和应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

移位寄存器的實現(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 endmodule

1.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; endmodule

1.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 endmodule

1.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,例化成功后

module seq_11001_3(input clk, output led); wire lin; reg[1:0] s=2'b10;//2左移 wire[3:0] q; assign lin=~q[2]|~q[1];//反饋函數(shù)lin=q2'+q1' assign led=lin;//可以將q[n]送到輸出也是可實現(xiàn)11001序列 p_74x194_0 uut( //調(diào)用IP核 .clk(clk),.clr_l(1), //清零端無效.rin(0), //74x194 rin接地.lin(lin), //左移輸入端等于q2'+q1'.s(s), //左移方式,s=2'b10.d(0), //數(shù)據(jù)輸入端可以接任意值.q(q) //輸出送q //需要對p_74x194.v中的q賦初值,因為后面會用); endmodule

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; endmodule

2.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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。