實現一個4bit的移位寄存器如下,不帶復位
module shift_reg(
input clk,
input rst,
input din,
output dout
);
reg [ 3:0] buff;
assign dout = buff[3];
always@(posedge clk) begin buff[3:0]
endmodule
下圖是ISE14.7實現后的結果如下圖所示,編譯器直接把他綜合進了一個SRL16里面,也就是專用的移位寄存器模塊,只需要一個LUT就可以實現16bit以內的移位
這是不帶復位的資源,可以看到觸發器只用了一個,LUT也只用了一個,并且是作為存儲器用的,而且是作為存儲器里面的移位寄存器使用。
下面是帶有復位的移位寄存器代碼
module shift_reg(
input clk,
input rst,
input din,
output dout
);
reg [ 3:0] buff;
assign dout = buff[3];
always@(posedge clk)
begin
if(rst==1) buff
end
endmodule
ISE14.7綜合結果如下:
從上圖可以看出,他是用了4個觸發器級聯構成,并且每個觸發器的復位端都是接了rst端的。
下圖是資源消耗,看的出來用了4個觸發器和0個LUT:
綜上:移位時間越長用沒有復位的方式越節約資源。
那么,對于寄存器初始狀態沒有復位怎么設置他呢?
verilog2001的標準已經解決,ISE14.7和vivado也都支持
比如, reg [ 3:0] buff = 0;就是上電后寄存器buff為全0
而 reg [ 3:0] buff = 8'hff;就是上電后寄存器buff的值為全1
編輯:hfy
-
移位寄存器
+關注
關注
3文章
259瀏覽量
22342 -
復位電路
+關注
關注
13文章
322瀏覽量
44701
發布評論請先 登錄
相關推薦
XILINX FPGA CLB單元之移位寄存器
![XILINX FPGA CLB單元之<b class='flag-5'>移位寄存器</b>](https://file1.elecfans.com/web3/M00/06/48/wKgZO2eI1gCAEFwbAAAroaCYpFQ525.png)
移位寄存器的工作原理、類型及應用
移位寄存器中使用的儲存單元是什么
移位寄存器中Dsr有什么用
移位寄存器右移是怎么移位的
移位寄存器的工作原理與作用
雙向移位寄存器的工作原理、特點及應用
帶3態輸出寄存器的8位移位寄存器SNx4AHCT595數據表
![帶3態輸出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b>SNx<b class='flag-5'>4</b>AHCT595數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 SNx4HC595 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 SNx<b class='flag-5'>4</b>HC595 8位<b class='flag-5'>移位寄存器</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論