集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

FPGA初级课程第十八讲 FIFO

[复制链接]
 楼主| lcytms 发表于 2016-11-22 17:10:37 | 显示全部楼层
IP核管理界面p5。
点击Next。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:12:31 | 显示全部楼层
IP核管理界面p6。
检查Read-side和Write-side两栏中的full和empty均已选中。
点击Next。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:13:47 | 显示全部楼层
IP核管理界面p7。
点击Next。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:16:09 | 显示全部楼层
IP核管理界面p8。
点击Next。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:21:14 | 显示全部楼层
IP核管理界面p9。
点击Next。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:22:15 | 显示全部楼层
IP核管理界面p10。
选中最后两行my_fifo_inst.v和my_fifo_bb.v。
点击Finish,完成IP核管理界面的设置,总计10个设置页面。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:23:14 | 显示全部楼层
这时检查工程导航一栏,发现Files一项中已经自动生成对应的IP核文件my_fifo.qip。
打开下一级的my_fifo.v,可以看到其封装代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:26:27 | 显示全部楼层
在资源管理器的工程文件夹下找到已经生成的my_fifo_inst.v文件,打开该文件。
my_fifo        my_fifo_inst (
        .data ( data_sig ),
        .rdclk ( rdclk_sig ),
        .rdreq ( rdreq_sig ),
        .wrclk ( wrclk_sig ),
        .wrreq ( wrreq_sig ),
        .q ( q_sig ),
        .rdempty ( rdempty_sig ),
        .rdfull ( rdfull_sig ),
        .wrempty ( wrempty_sig ),
        .wrfull ( wrfull_sig )
        );

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:31:19 | 显示全部楼层
将my_fifo_inst.v代码拷贝粘贴到fifo.v模块中,修改实例化的信号名。
新建fifo_write和fifo_read控制模块,编写框架代码。
在fifo.v模块中放入fifo_write和fifo_read控制模块,对其进行实例化操作。
编写fifo.v模块如下。
module fifo (clk, rst_n, q);

        input clk, rst_n;
       
        output [7:0] q;
       
        wire wrreq, rdreq;
        wire wrfull, wrempty, rdfull, rdempty;
        wire [7:0] data;

        fifo_write fifo_write_inst (
                        .clk(clk),
                        .rst_n(rst_n),
                        .wrfull(wrfull),
                        .wrempty(wrempty),
                        .wrreq(wrreq),
                        .data(data)
                );

        fifo_read fifo_read_inst (
                        .clk(clk),
                        .rst_n(rst_n),
                        .rdfull(rdfull),
                        .rdempty(rdempty),
                        .rdreq(rdreq)
                );

        my_fifo        my_fifo_inst (
                        .data ( data ),
                        .rdclk ( clk ),
                        .rdreq ( rdreq ),
                        .wrclk ( clk ),
                        .wrreq ( wrreq ),
                        .q ( q ),
                        .rdempty ( rdempty ),
                        .rdfull ( rdfull ),
                        .wrempty ( wrempty ),
                        .wrfull ( wrfull )
                );

endmodule

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-22 17:35:59 | 显示全部楼层
继续完成fifo_write控制模块。
编写fifo_write控制模块代码如下。
module fifo_write (clk, rst_n, wrfull, wrempty, wrreq, data);

        input clk, rst_n;
        input wrfull, wrempty;
       
        output reg wrreq;
        output reg [7:0] data;
       
        reg state;
       
        always @ (posedge clk or negedge rst_n)
                begin
                        if (!rst_n)
                                begin
                                        wrreq <= 0;
                                        data <= 0;
                                        state <= 0;
                                end
                        else
                                begin
                                        case (state)
                                        0        :        begin
                                                                if (wrempty)
                                                                        begin
                                                                                wrreq <= 1;
                                                                                data <= 0;
                                                                                state <= 1;
                                                                        end
                                                                else
                                                                        begin
                                                                                state <= 0;
                                                                        end
                                                        end
                                                       
                                        1        :        begin
                                                                if (wrfull)
                                                                        begin
                                                                                wrreq <= 0;
                                                                                data <= 0;
                                                                                state <= 0;
                                                                        end
                                                                else
                                                                        begin
                                                                                wrreq <= 1;
                                                                                data <= data + 8'd1;
                                                                                state <= 1;
                                                                        end
                                                        end
                                                       
                                        default        :        state <= 0;
                                       
                                        endcase
                                end
                end

endmodule

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 00:16 , Processed in 0.062251 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表