当前位置:首页 > FPGA > 正文内容

Xilinx FIFO和ILA学习

chanra1n2年前 (2022-04-21)FPGA4692
`timescale 1ns / 1ps
//-------------------------------------------------------
//Filename       ﹕ FIFO_TOP.v
//Author         ﹕ ChanRa1n
//Description    ﹕ Control FIFO IP
//Calledby       ﹕ Topmodule
//RevisionHistory﹕ 2022-03-23 15:58:19
//Revision       ﹕ 1.0
//Email          ﹕ chenyu@myfpga.cn
//Website        ﹕ https://www.myfpga.cn
//Copyright(c) 2018-2022, MYFPGA.CN, All right reserved
//-------------------------------------------------------

module FIFO_TOP (
    input   Sys_clk_in,
    input   Sys_rst_n
);

//Signal
reg  [7:0]  din;
reg  [0:0]  wr_en;
reg  [0:0]  rd_en;
wire [7:0]  dout;
wire [0:0]  full;
wire [0:0]  empty;
wire [25:0] probe0;

//Private
reg  [2:0]  State_now;
reg  [2:0]  State_next;
reg  [7:0]  Trans_counter;//实际使用255
wire        Flag_write_read;
wire        Flag_read_idle;
localparam  STATE_IDLE =3'b001;
localparam  STATE_WRITE=3'b010;
localparam  STATE_READ =3'b100;

assign Flag_write_read=State_now==STATE_WRITE && Trans_counter==255;
assign Flag_read_idle=State_now==STATE_READ && Trans_counter==255;

always @(posedge Sys_clk_in or negedge Sys_rst_n) begin
    if(~Sys_rst_n)begin
        State_now<=STATE_IDLE;
    end
    else begin
        State_now<=State_next;
    end
end

always @(posedge Sys_clk_in or negedge Sys_rst_n) begin
    if(~Sys_rst_n)begin
        State_next<=STATE_IDLE;
    end
    else begin
        case(State_now)
            STATE_IDLE:State_next<=STATE_WRITE;
            STATE_WRITE:State_next<=Flag_write_read?STATE_READ:State_next;
            STATE_READ:State_next<=Flag_read_idle?STATE_IDLE:State_next;
            default:State_next<=State_next;
        endcase
    end
end

always @(posedge Sys_clk_in or negedge Sys_rst_n) begin
    if(~Sys_rst_n)begin
        Trans_counter<=0;
    end
    else begin
        case(State_now)
            STATE_IDLE:Trans_counter<=0;
            STATE_WRITE:Trans_counter<=Trans_counter+1;
            STATE_READ:Trans_counter<=Trans_counter+1;
            default:Trans_counter<=Trans_counter;
        endcase
    end
end

always @(posedge Sys_clk_in or negedge Sys_rst_n) begin
    if(~Sys_rst_n)begin
        din<=0;
        wr_en<=0;
        rd_en<=0;
    end
    else begin
        case(State_now)
            STATE_IDLE:begin din<=0;wr_en<=0;rd_en<=0; end
            STATE_WRITE:begin din<=Trans_counter;wr_en<=1;rd_en<=0; end
            STATE_READ:begin din<=0;wr_en<=0;rd_en<=1; end
            default:begin din<=0;wr_en<=0;rd_en<=0; end
        endcase
    end
end

fifo_generator_0 fifo_generator_0_u(
    .clk    (Sys_clk_in  ),
    .srst   (~Sys_rst_n ),
    .din    (din  ),
    .wr_en  (wr_en),
    .rd_en  (rd_en),
    .dout   (dout ),
    .full   (full ),
    .empty  (empty)
);

assign probe0 [0:0]   = wr_en;
assign probe0 [1:1]   = rd_en;
assign probe0 [2:2]   = full;
assign probe0 [3:3]   = empty;
assign probe0 [11:4]  = din;
assign probe0 [19:12] = dout;
assign probe0 [22:20] = State_now;
assign probe0 [25:23] = State_next;

ila_0  inst_ila_0 (
    .clk    (Sys_clk_in),  
    .probe0 (probe0)
);

endmodule

实验效果:

image.png

相关问题:

异步FIFO的深度计算问题

扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://myfpga.cn/index.php/post/242.html

分享给朋友:

“Xilinx FIFO和ILA学习” 的相关文章

Xilinx_ISE_DS_Win_14.7_1015_1 安装教程(Xilinx High Speed Cable USB驱动安装)

Xilinx_ISE_DS_Win_14.7_1015_1 安装教程(Xilinx High Speed Cable USB驱动安装)

首先下载Xilinx ISE软件的安装包,以下是百度云链接,6.12G,放着一晚上就下载完了链接:https://pan.baidu.com/s/13cUoFZgbld0X4ikCLsVFNQ 提取码:53ro更建议使用win7来安装这个,win8 win10 ...

Intel FPGA初级考试模拟试题 四套含答案

Intel FPGA初级考试模拟试题 四套含答案

*1.下列对异步信号进行同步的描述错误的是(使用锁存器)。采用保持寄存器加握手信号的方法特殊的具体应用电路结构,根据应用的不同而不同使用锁存器异步 FIFO *2.FPGA 的可编程是主要基于什么结构(查找表(LUT))。查找表(LUT)ROM 可编程PAL 可编程与或阵列可编程解析:FP...

SOC 在线修改设备树和FPGA配置文件 并在线配置FPGA

SOC 在线修改设备树和FPGA配置文件 并在线配置FPGA

测试过的平台:     1、DE-10 Cyclone V开发板              ...

Verilog实现时钟分频(奇数分频,偶数分频)二分频 三分频 四分频 五分频

Verilog实现时钟分频(奇数分频,偶数分频)二分频 三分频 四分频 五分频

完整工程文件:clkdiv.zip//------------------------------------------------------// File Name        : clkdiv.v// Author     &nb...