AXI总线slave模式下接收数据---verilog代码

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer: chensimin
//
// Create Date: 2020/04/17 18:45:54
// Design Name:
// Module Name: axi_slave_receive
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////// module axi_slave_receive #
( parameter integer S_AXI_DATA_WIDTH = ,
parameter integer S_AXI_ADDR_WIDTH =
)
( input wire s_axi_aclk,
input wire s_axi_aresetn,
input wire [S_AXI_DATA_WIDTH- : ] s_axi_wdata,
input wire [S_AXI_ADDR_WIDTH- : ] s_axi_awaddr,
input wire s_axi_wvalid,
input wire s_axi_awvalid,
output reg s_axi_wready,
output reg s_axi_awready,
output reg s_axi_bvalid,
input wire s_axi_bready,
output reg [S_AXI_DATA_WIDTH- : ] data,
output reg [S_AXI_ADDR_WIDTH- : ] address,
output reg valid ); //--------------------------------------------------------------------------------- parameter IDLE = ;
parameter READY = ;
parameter BVALID = ;
parameter BREADY = ; //--------------------------------------------------------------------------------- reg [:] current_state = ;
reg [:] next_state = ; always @(posedge s_axi_aclk or posedge s_axi_aresetn)
begin
if(s_axi_aresetn == 'b0)
current_state <= IDLE;
else
current_state <= next_state;
end //--------------------------------------------------------------------------------- always @(*)
begin
case(current_state)
IDLE:
begin
if(s_axi_wvalid && s_axi_awvalid)
next_state <= READY;
else
next_state <= IDLE;
end
READY:
begin
next_state <= BVALID;
end
BVALID:
begin
next_state <= BREADY;
end
BREADY:
begin
if(s_axi_bready)
next_state <= IDLE;
else
next_state <= BREADY;
end
default:
begin
next_state <= IDLE;
end
endcase
end //--------------------------------------------------------------------------------- always @(posedge s_axi_aclk)
begin
s_axi_wready <= 'b0;
s_axi_awready <= 'b0;
valid <= 'b0;
case(current_state)
IDLE:
begin
data <= ;
address <= ;
s_axi_bvalid <= 'b0;
end
READY:
begin
data <= s_axi_wdata;
address <= s_axi_awaddr;
valid <= 'b1;
s_axi_wready <= 'b1;
s_axi_awready <= 'b1;
s_axi_bvalid <= 'b0;
end
BVALID:
begin
s_axi_bvalid <= 'b1;
end
BREADY:
begin
if(s_axi_bready)
s_axi_bvalid <= 'b0;
end
default:
begin
data <= ;
address <= ;
s_axi_bvalid <= 'b0;
end
endcase
end endmodule

AXI总线slave模式下接收数据---verilog代码的更多相关文章

  1. Oracle非归档模式下脱机数据文件

    正常情况下,要想对数据文件脱机,必须在归档模式下,这是ORACLE自动保护的一种措施,防止在非归档模式下对数据文件脱机,造成数据丢失.如果想在非归档模式下执行数据文件脱机操作,则需要加上“for dr ...

  2. Angularjs在360兼容模式下取数据缓存问题解决办法

    测试提了一个bug,在360浏览器兼容模式下,删除页面数据需要手动刷新浏览器才能看到最新的数据.首先要复现当时的问题,很容易就复现了,但是发现在360浏览器兼容模式下无法打开开发者工具.好在经过反复重 ...

  3. postgresql 不同数据库不同模式下的数据迁移

    编写不容易,转载请注明出处谢谢, 数据迁移 因为之前爬虫的时候,一部分数据并没有上传到服务器,在本地.本来用的就是postgresql,也没用多久,数据迁移的时候,也遇到了很多问题,第一次使pg_du ...

  4. MVC模式下的数据展示:EasyUI的datagrid

    我的数据库设计是一张老师表teacher,一张学生表student,一个教师对应多个学生,在学生一方建立外键; 还有一点想清楚,需要展示的数据是根据什么来的,是成功登陆的用户的id?还是直接展示所有的 ...

  5. EntityFramework Code First 模式下使用数据迁移

    启用数据迁移 在程序包管理控制台选择安装了EntityFramework的项目,键入如下指令以启EF用数迁移. Enable-Migrations 命令成功运行后,所选项目下会添加名为Migratio ...

  6. 编码风格:Mvc模式下SSM环境,代码分层管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.分层策略 MVC模式与代码分层策略,MVC全名是ModelViewController即模型-视图-控制器,作为一种软件设计典范,用一种业 ...

  7. Chrome:开发者模式下js文件中代码显示在一行的解决方法

    比如我随便打开一个js文件,可以发现它的代码都挤在一行中,这对我们查找一些变量很不友好 解决方式:点击图中标红的那个按钮就可以了

  8. ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载

        第八章是一个非常重要的章节,讲述的是实模式下对硬件的访问(这一节主要讲的是硬盘),还有用户程序重定位的问题.现在整理出来刚好能和保护模式下的用户程序定位作一个对比. ★PART1:用户程序的重 ...

  9. 关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】

    刚刚听了吴老师是复制章节课程,对于GTID模式下备份数据--set-gtid-purged=OFF 参数有些不理解,于是乎做了实验,加深理解,得出些结论,如有错漏请批评指正! 部分备份: [root@ ...

随机推荐

  1. 详解 Properties类

    (请观看本人博文--<详解 I/O流>) Properties类: 概念: Properties 类的对象 是 一个持久的属性集 Properties 可 保存在流中 或 从流中加载 属性 ...

  2. vue路由中 Navigating to current location ("/router") is not allowed

    报错原因:多次点击同一路由,导致路由被多次添加 解决方法: router/index中添加以下代码: //router/index.js Vue.use(VueRouter) //导入vue路由 co ...

  3. Spring5:事务管理【整合Mybatis】

    Spring 整合Mybatis 1:导入依赖 <dependencies> <!--测试依赖--> <dependency> <groupId>jun ...

  4. [源码分析] 带你梳理 Flink SQL / Table API内部执行流程

    [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 目录 [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 0x00 摘要 0x01 Apac ...

  5. for嵌套setTimeout的心得

    export default { data() { return { dialogList: [] } }, created() { this.setList() }, methods: { setL ...

  6. 类内部装饰器的使用:property、classmethod与staticmethod

    1.property property是一种特殊的属性,可实现把函数名变为属性名使用.它可以在不改变类接口的前提下使用存取方法 (即读值和取值) 来修改数据的属性,property类有3个方法gett ...

  7. 微信自动关闭内置浏览器页面,返回公众号窗口 WeixinJSBridge.call('closeWindow')

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. AIX详细的VG,LV扩容步骤

    需求 1.归档日志刷得太快,经常把空间挤爆. 2.Oracle数据库表空间需要扩容 解决方案 1.先做重要数据备份 2.进行文件系统扩容 步骤 1. df -g 查找出/u01 对应的VG卷 VOLU ...

  9. hash算法解决冲突的方案

    1, 开放定址法: 所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 公式为:fi(key) = (f(key)+di) MOD m ...

  10. select和epoll区别

    select.epoll 区别总结: 1.支持一个进程所能打开的最大连接数 select 单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位的机器上,大小就是 ...