一、模块框图及基本思路

fifo_ip:ISE生成的IP

fifo_control:在fifo未满情况下不断写入递增的四位数,每隔1s读出一个数据驱动Led显示

fifo_top:前两个模块的组合

二、软件部分

fifo_control:

 module fifo_control(
clk,rst,
Data_Out,
din,wr_en,full,
dout,rd_en,empty
);
input clk,rst;
output[:] Data_Out;
output [:] din; //相对fifo来说是输入
input [:] dout; //相对fifo来说是输出
output wr_en,rd_en;
input full,empty; /****************定时部分*********************/
localparam T1S=50_000_000-;
reg[:] Count_1s;
always @(posedge clk or posedge rst)
begin
if(rst)
begin
Count_1s<='d0;
end
else if(Count_1s==T1S)
Count_1s<='d0;
else if(!isCount)
Count_1s<='d0;
else Count_1s<=Count_1s+'b1;
end
/*****************FIFO写入部分********************/
reg [:] i;
reg wr_en;
reg [:]din; always @(posedge clk or posedge rst)
if(rst)
begin
din<='d0;
i<='d0;
wr_en<='b0;
end
else if(!full)
case(i)
'd0:begin din<=din+1'b1;i<=i+'b1;wr_en<=1'b1;end
'd1:begin i<=2'd0;wr_en<='b0;end
endcase
/*******************FIFO读出部分***************************/
reg[:] Data_Out_r;
wire [:] dout;
reg isCount;
reg [:]j;
reg rd_en; always @(posedge clk or posedge rst)
if(rst)
begin
Data_Out_r<='d0;
j<='d0;
isCount<='b0;
rd_en<='b0;
end
else if(!empty)
case(j)
'd0:if(Count_1s==T1S) begin j<=j+1'b1;isCount<='b0;rd_en<=1'b1; end
else isCount<='b1;
'd1:begin rd_en<=1'b0;j<=j+'b1;end
'd2:begin Data_Out_r<=dout;j<=3'd0; end
endcase
assign Data_Out=Data_Out_r; /****************************************************/ endmodule

fifo_top:

 module fifo_top(
clk,RSTn,
Data_Out
);
input clk,RSTn;
output[:] Data_Out; wire [:]din;
wire [:]dout;
wire wr_en,rd_en,full,empty; /****************************************************/
fifo_ip U0 (
.clk(clk), // input clk
.rst(!RSTn), // input rst
.din(din), // input [3 : 0] din
.wr_en(wr_en), // input wr_en
.rd_en(rd_en), // input rd_en
.dout(dout), // output [3 : 0] dout
.full(full), // output full
.empty(empty) // output empty
);
/*********************************************************/
fifo_control U1 (
.clk(clk),
.rst(!RSTn),
.Data_Out(Data_Out),
.din(din),
.wr_en(wr_en),
.full(full),
.dout(dout),
.rd_en(rd_en),
.empty(empty)
); endmodule

三、硬件部分

黑金SPARTAN开发板

 NET "clk" LOC = T8;
NET "RSTn" LOC = L3; NET "Data_Out[0]" LOC = P4;
NET "Data_Out[1]" LOC = N5;
NET "Data_Out[2]" LOC = P5;
NET "Data_Out[3]" LOC = M6;

基于Verilog的简单FIFO读写实验的更多相关文章

  1. 基于Verilog的带FIFO写入缓冲的串口发送接口封装

    一.模块框图及基本思路 tx_module:串口发送的核心模块,详细介绍请参照前面的“基于Verilog的串口发送实验” fifo2tx_module:当fifo不为空时,读取fifo中的数据并使能发 ...

  2. 基于Verilog的带FIFO输出缓冲的串口接收接口封装

    一.模块框图及基本思路 rx_module:串口接收的核心模块,详细介绍请见“基于Verilog的串口接收实验” rx2fifo_module:rx_module与rx_fifo之间的控制模块,其功能 ...

  3. 基于Verilog HDL 各种实验

    菜鸟做的的小实验链接汇总:           1.基于Verilog HDL 的数字时钟设计 2.乘法器 3.触发器(基本的SR触发器.同步触发器.D触发器) 4.基于Verilog HDL的ADC ...

  4. 基于AHB总线的master读写设计(Verilog)

    一.AHB总线学习 1. AHB总线结构 如图所示,AHB总线系统利用中央多路选择机制实现主机与从机的互联问题.从图中可以看出,AHB总线结构主要可分为三部分:主机.从机.控制部分.控制部分由仲裁器. ...

  5. 基于Verilog HDL 的数字时钟设计

    基于Verilog HDL的数字时钟设计 一.实验内容:     利用FPGA实现数字时钟设计,附带秒表功能及时间设置功能.时间设置由开关S1和S2控制,分别是增和减.开关S3是模式选择:0是正常时钟 ...

  6. 基于Verilog的奇数偶数小数分频器设计

    今天呢,由泡泡鱼工作室发布的微信公共号“硬件为王”(微信号:king_hardware)正式上线啦,关注有惊喜哦.在这个普天同庆的美好日子里,小编脑洞大开,决定写一首诗赞美一下我们背后伟大的团队,虽然 ...

  7. 基于modelsim-SE的简单仿真流程—上

    基于modelsim-SE的简单仿真流程 编写RTL功能代码 要进行功能仿真,首先得用需要仿真的模块,也就是RTL功能代码,简称待测试的模块,该模块也就是在设计下载到FPGA的电路.一个电路模块想要有 ...

  8. berkerly db 中简单的读写操作(有一些C的 还有一些C++的)

    最近在倒腾BDB,才发现自己确实在C++这一块能力很弱,看了一天的api文档,总算是把BDB的一些api之间的关系理清了,希望初学者要理清数据库基本知识中的环境,句柄,游标的基本概念,这样有助于你更好 ...

  9. 基于SMB协议的共享文件读写 博客分类: Java

    基于SMB协议的共享文件读写 博客分类: Java   一.SMB协议 SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445. 服务器信息块(SMB)协议是一种IBM协议,用于在计 ...

随机推荐

  1. 『Numpy』np.meshgrid

    生成网格坐标,一个很好的说明图如下: 虽然xy双坐标比较常用,但实际上其输入可以是任意多的数组,输出数组数目等于输出数组数目,且彼此间shape一致. 如果输入数组不是一维的,会拉伸为1维进行计算. ...

  2. zabbix自动发现自动注册

    一.自动发现 1. 2自动注册详细配置 二.自动注册 1. . 2.自动注册详细配置 三 自动安装zabbix客户端脚本 #!/bin/bash #robin path='/etc/zabbix/za ...

  3. Java连接数据库 #06# SQL与代码分离(精化版本)

    索引 DAO层依赖关系草图 应用示例 接Java连接数据库#05#,对代码进行改进. DAO层依赖关系草图 应用示例(只需3步!) 1.首先定义接口类: package org.sample.shop ...

  4. 使用OwnerDraw改变ListView的ColumnHeader

    当我使用了OwnerDraw改变ListView的ColumnHeader的颜色之后,发现行无法显示内容了.其原因就是OwnerDraw属性设置为True造成了,也就是说,这个属性需要我们重画List ...

  5. 王之泰201771010131《面向对象程序设计(java)》第九周学习总结

    第一部分:理论知识学习部分 第7章异常.日志.断言和调试 概念:异常.异常类型.异常声明.异常抛出. 异常捕获1.异常处理技术2.断言的概念及使用3.基本的调试技巧 1)异常的概念 a.Java的异常 ...

  6. js-input框中写入的小写小写字母全部转换成大写字母的js代码

    <input type="text" id="blinitials" name="blinitials"  onkeyup=" ...

  7. Mac OS X 清除DNS缓存

    参考: Flushing your DNS cache in Mac OS X and Linux Mac OS X 清除DNS缓存 根据Mac OS X操作系统的版本选择以下命令: Mac OS X ...

  8. LOG4NET用法(个人比较喜欢的用法)

    LOG4NET用法(个人比较喜欢的用法) http://fanrsh.cnblogs.com/archive/2006/06/08/420546.html

  9. 安装tifffile

    python的opencv和PIL不能很好地处理tiff图像,所以我就转用tifffile 但是tifffile也装了很近,因为我是远控别人的电脑,所以看不太清报错,就自己瞎猜,不过还是装好了 首先去 ...

  10. WebApi 全局使用filter

    先上代码: public static class WebApiConfig { public static void Register(HttpConfiguration config) { // ...