NIOS II 自定义IP核编写基本框架
关于自定义IP
、接口
a、全局信号 时钟(Clk),复位(reset_n) b、avalon mm slave
地址(as_address)
片选(as_chipselect /as_chipselect_n)
写请求(as_write / as_write_n)
写数据(as_writedata(按照字节对齐,//32位位宽)
读请求(as_read / as_read_n)
读数据(as_readdata)(按照字节对齐,//32位位宽) 等待信号(as_waitrequest / as_waitrequest_n)
读数据有效信号(as_data_valid) 中断请求(irq / irq_n) c、导出信号,导出到NIOS 系统顶层,分配到IO,或者连接到Qsys系统以外的逻辑 、内部寄存器和线网的定义
数据寄存器(读/写)
状态寄存器(IP运行状态、数据状态……)
控制寄存器
中断屏蔽寄存器
用户自定义寄存器 、Avalon总线对寄存器的读写 //写入数据
always@(posedge clk or negedge reset_n)
if(!reset_n)
channel <= 'd0;
else if(as_chipselect && as_write && (as_address == ))
channel <= as_writedata[:]; //写指定地址实现相应功能,不考虑写入值
always@(posedge clk or negedge reset_n)
if(!reset_n)
control <= 'd0;
else if(as_chipselect && as_write && (as_address == ))
control <= 'd1;
else
control <= 'd0; //读寄存器逻辑
always@(posedge clk or negedge reset_n)
if(!reset_n)
as_readdata <= 'd0;
else if(as_chipselect && as_read)begin
case(as_address)
:as_readdata <= {'d0, data};
:as_readdata <= {'d0, channel};
:as_readdata <= {'d0, freq_sclk};
:as_readdata <= {'d0, irqmask};
:as_readdata <= {'d0, status};
default:as_readdata <= 'd0;
endcase
end 、用户逻辑对寄存器的赋值
always@(posedge clk or negedge reset_n)
if(!reset_n)
status[] <= 'd0;
else if(Conv_Done)
status[] <= 'b1;
else if(as_chipselect && as_read && (as_address == ))
status[] <= 'b0; always@(posedge clk or negedge reset_n)
if(!reset_n)
status[] <= 'd0;
else if(ADC_State)
status[] <= 'b1;
else
status[] <= 'b0;
NIOS II 自定义IP核编写基本框架的更多相关文章
- NIOS II 自定义IP核的静态地址对齐和动态地址对齐
如果使用静态地址对齐(每个寄存器在Avalon总线上占4个字节的地址)设置IP使用静态地址对齐的方式为,在hw.tcl脚本里加上一局话:set_interface_property as addres ...
- vivado设计四:自定义IP核测试
在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...
- vivado设计三:一步一步生成自己的自定义IP核
开发环境:xp vivado2013.4 基于AXI-Lite的用户自定义IP核设计 这里以用户自定义led_ip为例: 1.建立工程 和设计一过程一样,见vivado设计一http://blog. ...
- AXI-Lite总线及其自定义IP核使用分析总结
ZYNQ的优势在于通过高效的接口总线组成了ARM+FPGA的架构.我认为两者是互为底层的,当进行算法验证时,ARM端现有的硬件控制器和库函数可以很方便地连接外设,而不像FPGA设计那样完全写出接口时序 ...
- Vivado 调用自定义IP核
关于Vivado如何创建自定义IP核有大量的参考文章,这里就不多加阐述了,本文目的主要是解决如何在新建工程中引用其它工程已经自定义封装好的IP核,从而实现自定义IP核的灵活复用. 举个例子,我们的目标 ...
- Quartus设计FIR滤波器的系数文件格式(适用于FIR II的IP核)
对常用的FIR,我们使用MATLAB的fdatool(或者filterDesigner) 设计滤波器,给定指标,生成系数.为了方便,我们将系数保存到文件,其保存格式比较简介,在此进行说明. 1.FIR ...
- 【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等
[推荐图书]+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等 3赞 发表于 2016/7/4 21:14:12 阅读(1921) 评论(3) 初次接触FPGA,到 ...
- quartus ip核破解
在证书文件中添加一段: FEATURE 6AF7_0012 alterad 2035.12 permanent uncounted E75BE809707E VENDOR_STRING="i ...
- NIOS II CPU复位异常的原因及解决方案
NIOS II CPU复位异常的原因及解决方案 近期在用nios ii做项目时,发现一个奇怪的现象,在NIOS II EDS软件中编写好的代码,烧写到芯片中,第一次能够正常运行,但是当我按下板卡上 ...
随机推荐
- cinder-backup详细介绍
首先介绍Snapshot snapshot可以为volume创建快照,快照中保存了volume当前的状态,此后可以通过snapshot回溯 主要采用了Copy On Write算法.进行快照时,不牵涉 ...
- php if判断
php if判断 例子如下: True是否等于False 变量haq是不是老婆呢? <?php $ts=true; $f=false; if (isset($ts)&&isset ...
- 【转】几款移动跨平台App开发框架比较
原文地址:https://www.cnblogs.com/songxingzheng/p/6482697.html 整理目前流行的跨平台WebApp开发技术的特点,仅供参考. 每个框架几乎都包含以下特 ...
- HTTPS的页面发送不了HTTP请求?——关于混合内容
我们都知道HTTPS的页面是发送不了HTTP请求的,那么是什么原因导致HTTPS页面不能发送HTTP请求呢?如果有发送的需求,怎么样才能发送?最近刚好遇到了这个问题,而且搜了半天没搜到靠谱的答案,所以 ...
- Octave中调用hist出现broken pipe some output may be lost octave的解决(Mac)
参考:http://octave.1599824.n4.nabble.com/Mac-OS-X-Mountain-Lion-Octave-can-not-execute-sombrero-td4643 ...
- Mysql 性能优化 ( my.cnf )
简介: Mysql 参数优化 一.Mysql 源码编译参数 shell > yum -y install gcc gcc-c++ make cmake ncurses-devel zlib-de ...
- 第二天:让我们一起来玩玩css精灵(css sprites)
1.效果图 2.html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://ww ...
- Elasticsearch-PHP 搜索操作
搜索操作 好吧,这不叫elasticsearch的不劳而获!让我们来谈谈PHP客户端中的搜索操作. 客户端允许你通过REST API访问所有的查询和公开的参数,尽可能的遵循命名规则.让我们来看一些例子 ...
- 微服务性能优化之thrift改造
在我当前所做的web项目中,采用前后端分离模式前端通过Django 提供restful接口,后端采用微服务架构,微服务之间的调用采用jsonrpc,由于微服务之间的调用很频繁,导致前端得到的响应很慢, ...
- redis cluster test
cp /test/tests/redis.conf /etc redis-server /etc/redis.conf redis-trib.rb create --replicas 1 172.17 ...