在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3756|回复: 2

[求助] 关于FPGA嵌入式中定制自己的ip核

[复制链接]
发表于 2010-4-7 16:29:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我在xps中新建了一个工程,使用microblaze软核,然后添加了自定制的ip核,生成得user logic中有一个软件可寻址的寄存器,我想在软件代码中实现写这个寄存器,将这个寄存器各个位连接到板子外边的8个发光二极管上,实现对应位的亮和灭,但我不知道怎么用软件访问这个寄存器,谁有这方面的经验,请指点一下,我用的是Spartan3an starter kit开发板,我自己写的软件c代码如下:
#include "led_control.h"
#include"xparameters.h"
#include "xio.h"
/************************** Function Definitions ***************************/
#define delay 100000
#define led_control_DEVICE_ID  XPAR_LED_CONTROL_0_BASEADDR//base address
int main(void)
{
    Xuint32 value=0x00000fff ;
    Xuint32 addr= led_control_DEVICE_ID;
  unsigned offset=1;
     int i;
   
    while(1)
    {
         
    {
          LED_CONTROL_mWriteSlaveReg0(addr,offset , value);
    for (i=0; i<delay; i++);  
           }
    }
   
     
     
}
函数LED_CONTROL_mWriteSlaveReg0(addr,offset , value)是自制ip添加完毕后在工程目录下的driver文件夹中自动生成的,它的原型是
/**
*
* Write/Read 32 bit value to/from LED_CONTROL user logic slave registers.
*
* @param   BaseAddress is the base address of the LED_CONTROL device.
* @param   RegOffset is the offset from the slave register to write to or read from.
* @param   Value is the data written to the register.
*
* @return  Data is the data from the user logic slave register.
*
* @note
* C-style signature:
*  void LED_CONTROL_mWriteSlaveRegn(Xuint32 BaseAddress, unsigned RegOffset, Xuint32 Value)
*  Xuint32 LED_CONTROL_mReadSlaveRegn(Xuint32 BaseAddress, unsigned RegOffset)
*
*/
#define LED_CONTROL_mWriteSlaveReg0(BaseAddress, RegOffset, Value) \
  XIo_Out32((BaseAddress) + (LED_CONTROL_SLV_REG0_OFFSET) + (RegOffset), (Xuint32)(Value))

#define LED_CONTROL_mReadSlaveReg0(BaseAddress, RegOffset) \
  XIo_In32((BaseAddress) + (LED_CONTROL_SLV_REG0_OFFSET) + (RegOffset)),


下载到板子中二极管没有反应,不知什么原因,请指教

发表于 2010-4-7 16:52:51 | 显示全部楼层
你这个driver生成的函数可以看出,跟你是不是自定义IP基本没关系,它还是用了EDK里提供的API,XIo_In32这些东西。
但是你在写寄存器前,没有对LED进行实例化,加上试试吧。
如果不行,换个简单的,用它自带的专门用于写GPIO的API来控制LED(Xgpio_Initialize什么的,记不太清了),这个通过了再说。

当然还有一种可能就是你这个程序根本没跑起来,比如说你根本没初始化到bram里之类的错误。
 楼主| 发表于 2010-4-7 17:04:18 | 显示全部楼层
前面我已经实现了用gpio控制led,这次就是想用定制ip核的方式控制,
有一点我搞不懂,上面红色部分的函数中那个regoffset不知该怎么赋值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 15:46 , Processed in 0.024464 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表