?? edk 6.3 microblaze tutorial.txt
字號:
EDK 6.3 MicroBlaze Tutorial(原創)
nksz 發表于 2006-3-14 20:02:00
0
推薦聲明:本人初次接觸Xilinx EDK,摸索了一段時間,在網上搜索了一些資料。終于試驗成功。閑來無事,想到當初尋找文檔的種種艱辛,本人特撰寫此文檔,與那些想接觸EDK和剛剛接觸EDK的新手們共享。
為了達到能夠讓從沒接觸過EDK的同胞們在最短的時間內學會使用EDK,本文步驟清楚,并附有源代碼。通過閱讀該文檔,我相信每一個人都可以在30分鐘內學會使用EDK,在Xilinx FPGA內實現一個MicroBlaze的soft core.
另外,本人所做工作只是將各部分知識收集整理,不涉及任何版權問題。
轉載請注明出處!
鳴謝:首先我要感謝我的女朋友reecho,是她給我精神上的支持。如果這片文檔是我的孩子的話,那么她無疑將是這個孩子的母親。
另外,還要感謝pml同學,感謝他幫助我解決了許多實際的問題,并提供c的源代碼。
后記: 稍后,本人還會推出使用Altera公司niosII實現軟核的‘傻瓜’式文檔(試驗已完成)。敬請大家關注。
硬件配置:
1. Microblaze 或Power PC支持的Xilinx FPGA板一個(板上最好有一個LED)。
2. JTAG下載線一個(推薦使用本人推薦的下載線!!哈哈哈哈)。
軟件配置:
EDK 6.3或以上版本。(估計更低版本應該也可以,不過界面不太一樣)
1. 運行Xilinx Platform Studio。進入到以下界面,點擊OK:
2. 點擊Next。
3. 選擇I would like to create a system for custom board. 然后點擊Next
4. 選擇你的Xilinx FPGA板型號。如果你的Xilinx FPGA芯片支持Microblaze和PowerPC,你可以選擇MicroBlaze。點擊Next
5. 輸入電路板上晶振的頻率,例如19.2MHz, Local Data and Instruction Memory 選擇16KB,其他不變。
6. 點擊Add Device,IO Interface Type 選擇 GPIO,Device 選擇 LEDS。點擊OK。
7. 在GPIO Data Width 中選擇你板子上led的個數,如果開發板上只有一個led,選擇1;如果有4個led,就選擇4。然后點擊Next。
8. 點擊Next, 再點擊Next,再點擊Next,最后點擊finish。(不需改動任何東西)
9. 這時,會彈出一個窗口,它的意思是你需要修改兩個文件。一個是當前目錄下data/system.ucf 文件(這是一個管腳map文件,后面我們會提到)。另外一個是etc/download.cmd 文件(這是JTAG下載配置文件,后面我們會提到)。點擊OK
10. 在system下,Project Files下雙擊download.cmd文件。
download.cmd文件如下:
setMode -bscan
setCable -p auto
identify
assignfile -p 1 -file implementation/download.bit
program -p 1
quit
其中需要修改的只有‘1’這個數字字。這個數字代表的是你的FPGA在JTAG鏈中是第幾個。如果是第一個,就改成1;如果是第二個,就改成2。很簡單。在我的開發板上,是第三個,所以我改成3。
11. 雙擊system.ucf文件。
system.ucf 為FPGA管腳綁定文件。內容如下
############################################################################
## This system.ucf file is generated by Base System Builder based on the
## settings in the selected Xilinx Board Definition file. Please add other
## user constraints to this file based on customer design specifications.
############################################################################
Net sys_clk_pin LOC=W13;
Net sys_rst_pin LOC=AD4;
## System level constraints
Net sys_clk_pin PERIOD = 52089 ps;
Net sys_rst_pin TIG;
## FPGA pin constraints
Net fpga_0_LEDS_GPIO_d_out_pin<0> LOC=D5;
Net fpga_0_LEDS_GPIO_d_out_pin<1> LOC=F7;
Net fpga_0_LEDS_GPIO_d_out_pin<2> LOC=E7;
Net fpga_0_LEDS_GPIO_d_out_pin<3> LOC=D7;
其中主要需要修改‘W13,AD4,D5,F7,E7,D7'。分別對應你的clock管腳,reset管腳(一定要有!!!!),和led管腳。
注意:系統一定要有reset信號。并且要把reset信號接在地上,系統才會工作。Reset信號懸空,系統不會工作!
然后保存。
12. Tools->Generate Netlist
13. Tools->Generate Libraries and BSPs
14. 雙擊Application下 sources下的TestApp.c文件
編輯如下:
#i nclude "xbasic_types.h"
#i nclude "xparameters.h"
#i nclude "xutil.h"
#i nclude "xgpio_l.h"
#define XPAR_GPIO_REG_BASE XPAR_LEDS_BASEADDR
#define LED_DELAY 1000000
#define LED_CHANNEL 1
int main()
{
Xuint32 Data=0xaa;
volatile int Delay;
int count=0;
/* Set the direction for all signals to be inputs except the LED output */
XGpio_mSetDataDirection(XPAR_GPIO_REG_BASE, LED_CHANNEL, 0x0);
/* Loop forever blinking the LED */
while (1)
{ count++;
if (count%2==0)
{
XGpio_mSetDataReg(XPAR_GPIO_REG_BASE, LED_CHANNEL, 0x55);
}
else
{
XGpio_mSetDataReg(XPAR_GPIO_REG_BASE, LED_CHANNEL,0xaa);
}
/* Wait a small amount of time so the LED is visible */
for (Delay = 0; Delay < LED_DELAY; Delay++);
if (count%2==0)
{
XGpio_mSetDataReg(XPAR_GPIO_REG_BASE, LED_CHANNEL, 0x0f);
}
else
{
XGpio_mSetDataReg(XPAR_GPIO_REG_BASE, LED_CHANNEL,0xf0);
}
for (Delay = 0; Delay < LED_DELAY; Delay++);
}
return 0;
}
15. Tools->Build All User Applications.
16. 最后一步:Tools->Download。(JTAG接好,電源打開)
最后你應該可以看見你的led在一閃一閃亮晶晶的了。
注意:系統一定要有reset信號。并且要把reset信號接在地上,系統才會工作。Reset信號懸空,系統不會工作!
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -