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软件中编写好的代码,烧写到芯片中,第一次能够正常运行,但是当我按下板卡上 ...
随机推荐
- angularJs中的发送请求例子
$http({ //发送请求 url: 'http://localhost:8080/teacher/api/login', method: 'post', data: obj }) .success ...
- 怎么分辨linux系统是虚拟机还是物理机
用lspci -b|grep "VMware"抓取系列信息,即表明此系统的宿主机是基于VMware虚拟出来的,别的可以照葫芦画瓢来!
- Java--神奇的hashcode
一.Object的HashCode定义 public native int hashCode(); Object类的hashCode方式使用了native修饰也就意味着真正的实现调用的其他语言编写的方 ...
- Swift 动画片段
UIView.transitionWithView( self.WeatherDetailsView, duration: 0.7, options: .TransitionCrossDissolve ...
- Rhythmk 一步一步学 JAVA (18) Axis2 创建 WebService
一 > 环境配置 1.下载Axis2: 目前版本为 1.6.2 下载地址: http://axis.apache.org/axis2/java/core/ 下载 axis2-1.6.2-bin. ...
- mysql 乱码 utf8
my.ini [mysql]default-character-set=utf8 [mysqld]character-set-server=utf8 show variables like '%cha ...
- totoise svn误将桌面作为checkout路径,界面一堆?
工作中由于错误操作,totoise svn检出文件时,直接选择检出路径为桌面,这样导致界面一大堆“?”:看起来比较烦,上网查找处理方案: 其中一个最简单的方法是: 第一步:新建txt文件: 第二步:输 ...
- 不同应用场景的10个Linux面试问题与解答
本文由 极客范 - 小道空空 翻译自 Avishek Kumar.欢迎加入极客翻译小组,同我们一道翻译与分享.转载请参见文章末尾处的要求. 这一次我们不再介绍某个特定主题的Linux面试问题,而是随机 ...
- mysql存储过程(procedure)
#创建带参数的存储过程 delimiter // ),out p int) begin ; end // delimiter call pro_stu_name_pass(@n,@p); select ...
- centos7 修改静态ip 和dns
1.修改对应网卡的IP地址的配置文件# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-et ...