fifo復位設定如下,reset value 為1則高電平復位,為0則低電平復位,
如何清空fifo,fifo復位之後empty訊號預設為高,在工作中需要一次性清空fifo中的資料時,要對fifo的復位訊號產生乙個上公升沿即可實現fifo的清空
);//例項化fifo,只觀察它的復位與空訊號
time_fifo u_time_fifo (
.clk
(clk_50m)
,// input clk
.rst
(rst_n&&clear)
,// input rst
.din
(data)
,// input [15 : 0] din
.wr_en
(wr_en)
,// input wr_en
.rd_en()
,// input rd_en
.dout()
,// output [15 : 0] dout
.full()
,// output full
.empty
(fifo_empty)
// output empty);
reg[7:
0] cnt;
always@(posedge clk_50m or negedge rst_n)begin//給fifo寫入一些資料,使其非空if(
!rst_n) begin
data <=
16'd0;
wr_en<=
1'b0;
endelse begin
data <= data+
1'b1;
if(data ==10)
//復位完不能立即寫入,要過幾個時鐘才可以寫入,這裡簡單延時一下
wr_en<=
1'b1;
else
if(cnt ==
20)
wr_en<=
1'b0;
endend
always@(posedge clk_50m or negedge rst_n)begin//復位操作計時器if(
!rst_n) begin
cnt <=
8'd0;
clear<=
1'b1;
endelse begin
cnt <= cnt+
1'b1;
if(cnt ==20)
clear<=
1'b0;
//先拉低,過一會再拉高,產生乙個上公升沿
else
if(data ==25)
//拉低最小3個時鐘,可適當大一些,這裡保持了5個時鐘
clear<=
1'b1;
endend
endmodule
testbench程式:
`timescale 1ns /
1psmodule tb_fifo_test;
// inputs
reg clk_50m;
reg rst_n;
// outputs
wire [15:
0] data;
wire fifo_empty;
wire clear;
wire wr_en;
// instantiate the unit under test (uut)
fifo_test uut (
.clk_50m
(clk_50m),.
rst_n
(rst_n),.
data
(data),.
fifo_empty
(fifo_empty),.
wr_en
(wr_en),.
clear
(clear));
initial begin
// initialize inputs
clk_50m =0;
rst_n =0;
// wait 100 ns for global reset to finish
#20; rst_n =
1'b1;
endalways #10 clk_50m <=
~clk_50m;
endmodule
**結果如下,在復位訊號拉高後,fifo清空了。
硬體復位 軟體復位 上電復位的異同
硬體復位 顧名思義通過硬體給系統乙個復位,比如在電路板上設計一復位電路,通 過按下按鍵就可以給系統實現乙個復位,而無論系統在執行什麼樣的程式 硬體復位的作用區域一般是全域性的 軟體復位 是通過軟體給系統乙個復位訊號,如低電平或許是高電平 具體看系統設定 來實現復位操作 復位啟動不需要進行fpga d...
430的復位及復位電路
msp430使用了兩個分離的復位訊號,乙個用作軟體復位 上電清除 另乙個就用作硬體復位 上電復位 訊號。硬體復位也就是por power on reset 軟體復位標識為puc power up clear 下面我們給出一般的兩種復位訊號的 por訊號在下面兩種事件發生時才會產生 當por訊號產生時...
同步復位與非同步復位 非同步復位和同步復位區別
同步復位與非同步復位 非同步復位和同步復位區別.瀏覽 188次 一 同步復位與非同步復位特點 同步復位就是指復位訊號只有在時鐘上公升沿到來時,才能有效。否則,無法完成對系統的復位工作。非同步復位是指無論時鐘沿是否到來,只要復位訊號有效,就對系統進行復位。二 非同步復位和同步復位的優缺點 1 同步復位...