您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页简单地FIFO仿真以及程序

简单地FIFO仿真以及程序

来源:测品娱乐
实用标准文档

写了一个简单的同步FIFO 的源程序以及Testbench仿真程序。主要参考了同学Xilinx fifo的仿真。有图有,抛砖引玉。

文案大全

实用标准文档

文案大全

实用标准文档

文案大全

实用标准文档

文案大全

实用标准文档

下面是程序:

module fifo ( clk, rst,

// fifo_wrdb, //din

文案大全

实用标准文档

fifo_rddb,//dout fifo_full, fifo_empty );

input clk; input rst;

//input[7:0]fifo_wrdb; output fifo_full; output fifo_empty;

// reg fifo_rdrdy;//fifo读数据有效信号 output [7:0]fifo_rddb;//fifo读数据总线

/*************************************************/ //wire [7:0]fifo_wrdb_r;

//assign fifo_wrdb_r = fifo_wrdb;

//定时产生32个FIFO数据写入和读出操作

reg[7:0] fifo_wrdb; //FIFO写入数据

reg fifo_wren; //FIFO写使能信号

reg fifo_rden; //FIFO读使能信号

reg[9:0] cnt;

always @(posedge clk or negedge rst) if(!rst) cnt <= 10'd0; else cnt <= cnt+1'b1;

always @(posedge clk or negedge rst ) if(!rst) begin

fifo_wren <= 1'b0; fifo_rden <= 1'b0; fifo_wrdb <= 8'd0; end

else if((cnt > 10'd0) && (cnt < 10'd33)) begin 数据写入 fifo_wren <= 1'b1; fifo_rden <= 1'b0;

fifo_wrdb <= cnt[7:0]; end

else if((cnt > 10'd100) && (cnt < 10'd133)) begin

文案大全

//连续32个FIFO

//连续32个FIFO

实用标准文档

数据读出 fifo_wren <= 1'b0; fifo_rden <= 1'b1; fifo_wrdb <= 8'd0; end

else begin

fifo_wren <= 1'b0; fifo_rden <= 1'b0; fifo_wrdb <= 8'd0; end

/**********************************************************/ //FIFO读数据有效标志位

// always @(posedge clk or negedge rst) // if(rst) fifo_rdrdy <= 1'b0; // else fifo_rdrdy <= fifo_rden;

/************************************************************/

fifo_controller fifo_controller_ck(

.clk(clk), // input clk .rst(rst), // input rst

.din(fifo_wrdb), // input [7 : 0] din .wr_en(fifo_wren), // input wr_en .rd_en(fifo_rden), // input rd_en

.dout(fifo_rddb), // output [7 : 0] dout .full(fifo_full), // output full .empty(fifo_empty) // output empty );

endmodule

下面是仿真程序:

module fifo_text;

// Inputs reg clk; reg rst;

// Outputs

文案大全

实用标准文档

wire [7:0] fifo_rddb; wire fifo_full; wire fifo_empty;

// Instantiate the Unit Under Test (UUT) fifo uut (

.clk(clk), .rst(rst),

.fifo_rddb(fifo_rddb), .fifo_full(fifo_full), .fifo_empty(fifo_empty) );

initial begin

// Initialize Inputs clk = 1'b0; rst = 1'b0;

//fifo_wrdb = 1;

// Wait 100 ns for global reset to finish #100; rst = 1'b1;

// clk = 1'b1; #1_00;

// Add stimulus here end

always

begin #10 clk = ~clk; end endmodule

文案大全

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务