注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dp: 生活的脚步,进步的点滴...

Cam、DSP、FPGA、PM、Life、More ...

 
 
 

日志

 
 

MicroBlaze中添加用户自定义IP核(GPIO简单控制LED)  

2012-12-14 09:10:41|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
软件环境为Xilinx Platform studio 11.3,开发板为红色飓风2代Xilinx版
1.在XPS中创建一个新的Project,加入一个GPIO核,GPIO的Data Width改为4,直到finish
2.Create or Import Peripheral
3.Create templates for a new peripheral, next
4.To an XPS Project,next
5.name:led_ip, next
6.IPIF Services:选择User logic software register,next
7.Peripheral implement support:选择in verilog和generate template driver files,直至finish
8.打开MPD文件,在“ports”下面加入PORT led_o = "", DIR = O, VEC = [0:3],save
9.打开led_ip.vhd
在“USER ports added here”下面加入“led_o  : out std_logic_vector(0 to 3);”(有两处)
在“USER ports mapped here”下面加入"led_o => led_o,",save
10.打开user_logic.v文件
在“USER ports added here” 下面加入“led_o,”
在第二个USER ports added here下面加入“output [0:3] led_o;”
在“USER nets declarations added here, as needed for user logic”下面加入“reg [0:3] led_r;”
在“USER logic implementation added here”下面加入如下代码:
always@(posedge Bus2IP_Clk)begin
if(Bus2IP_Reset)
led_r<=4'b0000;
else
if(slv_reg_write_sel)
led_r<=Bus2IP_Data[0:3];
end

always@(posedge Bus2IP_Clk)begin
if(Bus2IP_Reset)
led_o<=4'b0000;
else
begin
case(led_r)
4'b1000:led_o<=4'b1000;
4'b0100:led_o<=4'b1100;
4'b0010:led_o<=4'b1110;
4'b0001:led_o<=4'b1111;
default:led_o<=4'b0000;
endcase
end
end
保存文件
12.在IP Catalog中找到刚建立的IP(在最下面),Add,并连接到PLB总线上
13.在Ports标签栏中把IP核连上(make external)
13.在Addresses标签栏中“generate addresses"
14.在UCF文件中设置好管脚,其中led_ip的管脚连接如下所示:
Net led_ip_0_led_o_pin<0> LOC=p204;
Net led_ip_0_led_o_pin<1> LOC=p203;
Net led_ip_0_led_o_pin<2> LOC=p200;
Net led_ip_0_led_o_pin<3> LOC=p199;
save
15.硬件部分弄完了就可以生成bitstream,添加软件部分的程序
16.generate bitstream结束以后,在Application标签栏中把"Project:TestApp_Memory_microblaze_0"中的.c文件去掉,在Sources里Add new file,加入如下代码:
#include "xparameters.h"
#include "xgpio.h"
#include "led_ip.h"

//====================================================

int main (void) 
{
XGpio push;
       int i, psb_check;
       // define instance pointer for LEDs device
       
       XGpio_Initialize(&push, XPAR_PUSH_BUTTONS_DEVICE_ID);
       XGpio_SetDataDirection(&push, 1, 0xffffffff);
       
       while (1)
       {
         psb_check = XGpio_DiscreteRead(&push, 1);   
         psb_check=psb_check<<28;
         // output pushbuttons value on LEDs device
         LED_IP_mWriteReg(XPAR_LED_IP_0_BASEADDR, 0x00000000, ~psb_check);
         
         for (i=0; i<999999; i++);
       }
}
save
17.generate libraries and BSPs
18.把“Project:TestApp_Memory_microblaze_0”中的”headers"中的文件去掉,加入led_ip.h文件(led_ip.h文件的路径为lab3_3/drivers/led_ip_v1_00_a/src/led_ip.h)
19.在Application标签中,右键点击”Project:TestApp_Memory_microblaze_0“,选择Build Project
20.Download Bitstream
  评论这张
 
阅读(729)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016