微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > microblaze 嵌入式

microblaze 嵌入式

时间:10-02 整理:3721RD 点击:
谁知道userlogic中的软件可读写寄存器用什么函数读写?

哈。你是昨天那个说LED的吧?
你去你的EDK目录里找吧,
EDK\sw\XilinxProcessorIPLib\drivers里面,看你microblaze用的什么版本的驱动

我就是用的那个驱动,但led没反应,怎么回事呢

LED_CONTROL_mWriteSlaveReg0(addr,0 , value);这是我用的写寄存器函数,
原型是LED_CONTROL_mWriteSlaveReg0(BaseAddress, RegOffset, Value)。
led没反应啊

他的原型是这个
XIo_Out32((BaseAddress) + (LED_CONTROL_SLV_REG0_OFFSET) + (RegOffset), (Xuint32)(Value))
你先用这个函数去替换你之前GPIO项目里面的写操作,看看是否正常。

我用过这个函数,还是没反应,我的想法如下:
我在microblaze中添加了用户自定制ip,它自动生成了userlogic,里面自带了软件可读写寄存器,我的想法是用软件c代码实现写userlogic中的寄存器,然后将寄存器的值输出到片外的8个led上,实现led的点亮,能不能加qq聊,这样太慢了
我的qq89784454

或者是不是我的参数给错了,((BaseAddress) + (LED_CONTROL_SLV_REG0_OFFSET) + (RegOffset), 中的regoffset应该给什么值呢

公司不能上QQ。
跟offset没啥关系。
看看你的UCF和MHS,里面的映射关系对了没?

ucf文件应该没什么问题,我在userlogic中定义了一个8位的信号led作为输出,在UCF中当我直接给led信号赋值时,比如赋给8‘b11111111,下载后就可以点亮,,另一方面我将userlogic自己的寄存器(32位)的最后八位用assign赋给led,就不能点亮,我感觉应该是软件部分没有起作用

刚才说错了,不是在UCF中给led信号赋值,是在userlogic中给led信号赋值

UCF中的管教约束如下:
Net led_control_0_led_pin<0> LOC =  R20;
Net led_control_0_led_pin<0> IOSTANDARD = LVCMOS33;
Net led_control_0_led_pin<1> LOC =  T19;
Net led_control_0_led_pin<1> IOSTANDARD = LVCMOS33;
Net led_control_0_led_pin<2> LOC =  U20;
Net led_control_0_led_pin<2> IOSTANDARD = LVCMOS33;
Net led_control_0_led_pin<3> LOC =  U19;
Net led_control_0_led_pin<3> IOSTANDARD = LVCMOS33;
Net led_control_0_led_pin<4> LOC =  V19;
Net led_control_0_led_pin<4> IOSTANDARD = LVCMOS33;
Net led_control_0_led_pin<5> LOC =  V20;
Net led_control_0_led_pin<5> IOSTANDARD = LVCMOS33;
Net led_control_0_led_pin<6> LOC =  Y22;
Net led_control_0_led_pin<6> IOSTANDARD = LVCMOS33;
Net led_control_0_led_pin<7> LOC =  W21;
Net led_control_0_led_pin<7> IOSTANDARD = LVCMOS33;
mhs文件中的定制ip部分如下:
BEGIN led_control
PARAMETER INSTANCE = led_control_0
PARAMETER HW_VER = 1.00.a
PARAMETER C_BASEADDR = 0x84418000
PARAMETER C_HIGHADDR = 0x8441ffff
BUS_INTERFACE SPLB = plb_v46_0
PORT led = led_control_0_led
END
xparameters.h文件中的自制ip部分如下:
/* Definitions for driver LED_CONTROL */
#define XPAR_LED_CONTROL_NUM_INSTANCES 1
/* Definitions for peripheral LED_CONTROL_0 */
#define XPAR_LED_CONTROL_0_DEVICE_ID 0
#define XPAR_LED_CONTROL_0_BASEADDR 0x84418000
#define XPAR_LED_CONTROL_0_HIGHADDR 0x8441FFFF

软件代码如下:
#include "led_control.h"
#include"xparameters.h"
#include "xio.h"
#define delay 1000000
int main(void)
{
Xuint32 value=0xffffffff ;
    Xuint32 addr= XPAR_LED_CONTROL_0_BASEADDR;
unsigned int i;
while(1)
    {
                
                         
          LED_CONTROL_mWriteSlaveReg0(addr,0 , value);
                          for (i=0; i<delay; i++);  
           
    }
   
     
     
}

软件代码如下:
#include "led_control.h"
#include"xparameters.h"
#include "xio.h"
#define delay 1000000
int main(void)
{

    Xuint32 value=0xffffffff ;
    Xuint32 addr= XPAR_LED_CONTROL_0_BASEADDR;
               unsigned int i;
               while(1)
    {
                
                         
          LED_CONTROL_mWriteSlaveReg0(addr,0 , value);
                          
                  
          for (i=0; i<delay; i++);  
           
    }
   
     
     
}

请高手指点,这个问题已经困扰我两天了

VERY GOOD

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top