?? 資源詳細信息
?? 溫馨提示:本資源由用戶 20125101110 上傳分享,僅供學習交流使用。如有侵權,請聯系我們刪除。
資源簡介
FPGA片內FIFO讀寫測試Verilog邏輯源碼Quartus工程文件+文檔說明,使用 FPGA 內部的 FIFO 以及程序對該 FIFO 的數據讀寫操作。FPGA型號Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。
timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
module fifo_test(
input clk, //50MHz時鐘
input rst_n //復位信號,低電平有效
);
//-----------------------------------------------------------
localparam W_IDLE = 1;
localparam W_FIFO = 2;
localparam R_IDLE = 1;
localparam R_FIFO = 2;
reg[2:0] write_state;
reg[2:0] next_write_state;
reg[2:0] read_state;
reg[2:0] next_read_state;
reg[15:0] w_data; //FIFO寫數據
wire wr_en; //FIFO寫使能
wire rd_en; //FIFO讀使能
wire[15:0] r_data; //FIFO讀數據
wire full; //FIFO滿信號
wire empty; //FIFO空信號
wire[8:0] rd_data_count;
wire[8:0] wr_data_count;
///產生FIFO寫入的數據
always@(posedge clk or negedge rst_n)
begin
if(rst_n == 1'b0)
write_state <= W_IDLE;
else
write_state <= next_write_state;
end
always@(*)
begin
case(write_state)
W_IDLE:
if(empty == 1'b1) //FIFO空, 開始寫FIFO
next_write_state <= W_FIFO;
else
next_write_state <= W_IDLE;
W_FIFO:
if(full == 1'b1) //FIFO滿
next_write_state <= W_IDLE;
else
next_write_state <= W_FIFO;
default:
next_write_state <= W_IDLE;
endcase
end
assign wr_en = (next_write_state == W_FIFO) ? 1'b1 : 1'b0;
always@(posedge clk or negedge rst_n)
begin
if(rst_n == 1'b0)
w_data <= 16'd0;
else
if (wr_en == 1'b1)
w_data <= w_data + 1'b1;
else
w_data <= 16'd0;
end
///產生FIFO讀的數據
always@(posedge clk or negedge rst_n)
begin
if(rst_n == 1'b0)
read_state <= R_IDLE;
else
read_state <= next_read_state;
end
always@(*)
begin
case(read_state)
R_IDLE:
if(full == 1'b1) //FIFO滿, 開始讀FIFO
next_read_state <= R_FIFO;
else
next_read_state <= R_IDLE;
R_FIFO:
if(empty == 1'b1)


立即下載此資源
資源說明
下載說明
- 下載需消耗 2積分
- 24小時內重復下載不扣分
- 支持斷點續傳
- 資源永久有效
使用說明
- 下載后用解壓軟件解壓
- 推薦 WinRAR 或 7-Zip
- 如有密碼請查看說明
- 解壓后即可使用
積分獲取
- 上傳資源獲得積分
- 每日簽到免費領取
- 邀請好友注冊獎勵
- 查看詳情 →