220 likes | 234 Views
環境設定. Hardware development : quartus2 4.0 web edition and web license ,download form website Software development : sopcbuilder with gnupro CD in the box. Excalibur ARM. Excalibur ARM feature. Powerful development board for embedded processor FPGA designs
E N D
環境設定 • Hardware development : quartus2 4.0 web edition and web license ,download form website • Software development : sopcbuilder with gnupro CD in the box
Excalibur ARM feature • Powerful development board for embedded processor FPGA designs • – Features an EPXA1F484 device • – Supports intellectual property-based (IP-based) designs using a microprocessor • Industry-standard interconnections • – 10/100 megabits per second (Mbps) Ethernet • – Two RS-232 ports • Memory subsystem • – 8 Mbytes of flash memory • – 32 Mbytes of single data rate (SDR) SDRAM • Multiple clocks for communications system design • Multiple ports for configuration and debugging • – IEEE Std. 1149.1 Joint Test Action Group (JTAG) • – Support for configuring the EPXA1 device using flash memory, • with a MasterBlaster™ or ByteBlasterMV™ cable • – Multi-ICE header for debugging • Expansion headers for greater flexibility and capacity • – 5-V standard expansion header • – 5-V long expansion card header • Additional user-interface features • – One user-definable 8-bit dual in-line package (DIP) switch block • – Four user-definable push-button switches, plus reset switch • – Ten user-definable LEDs, plus function-specific LEDs • Test points provided to facilitate system development
This is Stripe Excalibur ARM , EPXA1
Embedded Stripe Components • ARM922T 32-Bit RISC Processor • –200-MHz Bus Performance • Embedded Memory • –Single-Port SRAM to 256 Kbytes • –Dual-Port SRAM to 128 Kbytes • SDRAM Controller • Expansion Bus Interface • Multi-Layer AMBA AHB Bus Architecture • Embedded Bridges between Stripe & PLD • Embedded Peripherals • –UART • –Timer • –Watchdog Timer • –Interrupt Controller
Excalibur ARM, epxa1,Design example • ug_xa1_devbd_getting_started • Can be download form here http://www.altera.com/literature/lit-exc.jsp • 這是一個簡單的example, stripe是唯一的 bus master,只有它能送出read 或write 的request, slave則負責回映master的要求
The block diagram of this example Single_transaction_slave Stripe Reg_file
A write request form stripe Single_transaction_slave Stripe 1 2 Reg_file
A write request from stripe • Stripe 透過 AHB 送出一個write request到single_transaction_slave, single_transaction_slave 的功用為負責處理AHB上面的溝通訊號 • Single_transaction_slave 將資料傳給regfile處理
A read request form stripe Single_transaction_slave Stripe 1 4 3 2 Reg_file
A read request from stripe • Stripe 透過 AHB 送出一個read request到single_transaction_slave • Single_transaction_slave 將資料傳給regfile處理 • Regfile將資料傳回給single_transaction_slave • Single_transaction_slave 將資料傳回給stripe
Example Builds in epxa1 • Download the example • First hardware build • Then software build • download to development board • Setup RS-232 connect in PC
Hardware build • 先用quartusII打開example • 按圖上的紐開始hardware build • 通常不會有問題除了license Push here to build hardware
Software build • 打開SOPC Builder SDK Shell • 進到example裡面的gnu資料夾中,將makefile中的epxa10.c改為epxa1.c • 輸入make
Download the design to development board • 執行prog_hw.bat • 接下來就能看到板子上面的跑馬燈
Setup RS-232 • 打開hyperterminal做左邊圖裡面的設定
Example results • 在板子上面能看到LED在跑動, 用RS-232和板子相連的PC也能夠在hyperterminal 的視窗中看到以下的訊息 ************************************************************** **Altera EPXA10 Development Board - I'm alive!!! ** ** ** ** Look for scrolling LEDs ** ** ** **************************************************************
修改example-hardware What you want a write request do What you want a read request do Double click 在 regfile 的圖上
My Example reg_file.v if(write) begin if(reg_state) begin temp1 <= wdata; reg_state <= 1'b0; end else begin temp2 <= wdata; reg_state <= 1'b1; end end //endif else begin rdata <= temp1 + temp2; end
修改example - software int main(void) { LED = (volatile unsigned int*) EXC_PLD_BLOCK0_BASE + 0x00001000; printf("\r\n"); printf("****************************************************\r\n"); printf("** **\r\n"); printf("** Altera EPXA10 Development Board - I'm alive!!! **\r\n"); printf("** **\r\n"); printf("** Look for scrolling LEDs **\r\n"); printf("** **\r\n"); printf("****************************************************\r\n"); while (1) Scroll_LED(); return 0; } 在common的資料夾內的main.c
My Example main.c temp = *LED; while(tempc != 0){ printf("input first number :"); scanf("%d",&temp); *LED = temp; printf("input second number :"); scanf("%d",&temp); *LED = temp; temp = *LED; printf("temp = %d \r\n",temp); printf("continue?(1/0)\r\n"); scanf("%d",&tempc); }
My Example Results input first number :132 input second number :333 temp = 465 continue?(1/0)