关于xilinx的软核microblaze的两个问题。

软核是按照流程生成的,初步调试成功。因为刚接触FPGA不久,遇到两个问题。
一是要用到microblaze这个软核上的数据总线:需要用到什么总线?其中的数据总线、地址总线、控制控制 怎么挂载到外部引脚上。
二是要用到它的定时器中断和GPIO中断。中断服务程序是怎么被识别的。我在网上找到几个例子,都没看出来是中断时,程序怎么去识别中断服务函数而不是认错其他函数。

如果您比较忙,顺手指点下思路也可以,谢谢!

1.数据总线的名字忘了 xilinx官网上下载一个microblaze的datasheet 里面有结构图 有名字
使用外部引脚需要添加GPIO IP核 在GUI里设置总线连接 具体看下GPIO的datasheet
2.中断专门有个中断控制器的IP核 需要添加一个 在中断控制器里面可以设置中断优先级什么的
其配套API函数 可以设置中断服务程序 比如计数器的中断执行计数器中断服务子函数 看门狗执行
看门狗中断服务子程序追问

第二个问题差不多解决了

第一个总线是AXI 海是PLB?如果是GPIO的话,我已经成功添加了。现在的问题是总线。
我需要32根数据总线 16位地址总线 3根控制总线(CS RD WR)

追答

应该是PLB 记得一共就3个选项 3个都试试 也没多长时间
你所指的数据总线 添加gpio核就行了

追问

gpio核?我说的是三总线结构,数据总线 地址总线 控制总线,我需要用这种总线连接一个芯片,这个芯片必须是这个接口

追答

我昨天用了下12.4 看到了axi O(∩_∩)O哈哈~ 以前用的10.1 都没有这个
对于这两个总线 在你选的时候看介绍就行了 具体区别3楼可能说的是对的 具体没用过也没研究过

你要是做个毕设什么的 对速度没什么要求 随便选一个 哪个都能工作

你再总线 不得输入输出? 加3个gpio核 根据总线位数设置ip核的位数 该输入输入 该输出输出 不就是总线?

我昨天用了下12.4 看到了axi O(∩_∩)O哈哈~ 以前用的10.1 都没有这个
对于这两个总线 在你选的时候看介绍就行了 具体区别3楼可能说的是对的 具体没用过也没研究过

你要是做个毕设什么的 对速度没什么要求 随便选一个 哪个都能工作

你再总线 不得输入输出? 加3个gpio核 根据总线位数设置ip核的位数 该输入输入 该输出输出 不就是总线?

追问

我这个是做一个项目需要用的,对速度有要求的。要求中断服务程序在200us内执行完。
你说的用GPIO来模拟总线的时序肯定要慢上5倍以上,这个我以前想过,速度不够用了

追答

中断的响应 和gpio核没关系吧
你要使用中断 必须使用中断控制器 中断控制器负责响应中断 转到响应的中断服务子程序
gpio核负责提供响应的中断标志信号 具体中断服务子程序执行了多长时间和microblaze的结构、系统的频率还有个你中断程序的长短有关系

你如果不用gpio的话 可以自己写一个控制总线的ip核 不过我不认为中断服务子程序在同样长度同样频率的情况下 执行时间会短

3楼和xilinx都说axi是新加的总线 可以研究一下 试试 看看速度有没有提升

追问

中断没问题了,可以实现这个功能。
问题是在中断服务程序,需要通过三总线对外部的设备进行读写。
用C语言来写就是一句*p = date;就能对外部的存储单元写了,这样速度是最快的,如果是用IO来模拟肯定慢多了。
现在的问题好像是这个软核不提供这种三总线接口。。。。

追答

你的总线需要和外部器件相连 你叫他总线 但是对于microblaze来说他就是io口
如果你用arm单片机速度肯定比这个块 非用这个吗?
这个软核肯定提供你所说的这种总线结构
XGpio_DiscreteWrite(&data_bus, 1, data);和你那个*p=data;效果一样

追问

不一样。
&data_bus是IO口的地址,而这个地址是在芯片内部的(挂在PLB总线上),
XGpio_DiscreteWrite(&data_bus, 1, data);这一句只对外部产生一个输出芯片,根本没有总线操作的时序

追答

时序都是用程序写出来的 不管你用c还是hdl
如果你在写flash或者ram控制器 直接有ip核 不要自己写了

我始终不知道你在做什么 想要干什么

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-30
MicroBlaze嵌入式软核是一个被Xilinx公司优化过的可以嵌入在FPGA中的RISC处理器软核,具有运行速度快、占用资源少、可配置性强等优点,广泛应用于通信、军事、高端消费市场等领域。
追问

说的都是废话!

相似回答