2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、SOPC技術,第5章 Nios II 系統(tǒng)的外圍設備,NO.3.1,完成所有的軟/硬件開發(fā)工作后,可以使用NiosⅡ?IDE提供的Flash Programmer工具將程序下載到FPGA平臺上的FLASH存儲器中。Flash Programmer是NiosⅡ IDE 6.0提供的新工具,它可以將配置數(shù)據(jù)、NiosⅡ程序及其他數(shù)據(jù)文件下載到目標板上的FLASH存儲器中,這里所說的FLASH存儲器包括業(yè)界標準的CFI或CFI兼容的FLAS

2、H存儲器,以及Altera公司的EPCS系列串行配置器件。,IDE Flash Programmer 通過2個過程將數(shù)據(jù)寫入flash:(1)用Altera提供的“Flash編程設計”對FPGA進行配置;(2) IDE Flash Programmer將文件內(nèi)容→ “Flash編程設計” → Flash,Flash編程設計,每個Flash編程設計應包含的元件:,使用IDE Flash Programmer編程,首先要保證在SOPC

3、Builder中,在Target選項區(qū)中的Board的下拉列表框中選擇用戶當前使用的目標板Flash 編程設計。 SmartSOPC_Board_1C6是現(xiàn)用核心板提供的目標板Flash編程設計,可以對核心板上的NOR Flash(元件標號U7)和EPCS (元件標號U10)進行編程。,,使用NiosⅡIDE對FLASH存儲器編程的步驟:  啟動Nios II IDE。 建立軟件工程,然后編譯連接(Bu

4、ild Project) 選中要進行編程的工程,然后選Tools>Flash Programmer菜單啟動Flash Programmer對話框,如圖5.5.2。 單擊Flash Programmer對話框左下角的New命令按鈕,建立一個新編程任務,可以修改這個新任務的名稱。,若選中program software project into flash memory project,可將工程的.elf文件寫入Flash(EPC

5、S)。若選中program FPGA configuration data into hardware-image region of flash memory,可將FPGA的配置文件寫入Flash(EPCS)。若選中Program file into a flash memory選項,可將二進制文件寫入Flash。需要選擇要編程的二進制文件及要編程的存儲器(U7為Flash,U10為EPCS)。,(5) 在Main頁面中可以選擇所

6、要編程的內(nèi)容,包括工程名稱、FPGA配置文件的名稱以及目標存儲器。,圖5.5.2 Flash Programmer對話框,(4) 在Target Connection頁面中選擇與目標板相連的下載電纜,如圖5.5.3。,(5) 設置好這些內(nèi)容之后,單擊Apply按鈕,然后單擊Program Flash按鈕,NiosⅡ?IDE重新編譯工程并對FLASH存儲器進行編程。(若在SOPC Builder中沒有指定目標板,則Program Fla

7、sh按鈕將是灰色不能使用。) 從IDE的Console窗口可以看見編程過程。(見圖5.5.4) 完成Flash編程后,需讓系統(tǒng)重新上電,使FPGA使用EPCS中配置數(shù)據(jù)重新配置FPGA, 程序才能正常運行。,圖5.5.3 Flash Programmer 中目標連接設置,在console窗口顯示編程過程及編程結束標志,圖5.5.4,通信接口,目前存在的所有計算機通信接口在嵌入式領域中都有其廣泛的應用,

8、應用最為廣泛的接口設備包括 RS-232接口(串口UART) USB接口(通用串行總線接口) IrDA(Infra Red Data Association-紅外線接口) SPI(串行外圍設備接口)、 I2C、CAN總線接口、 藍牙接口(Bluetooth) Ethernet(以太網(wǎng)接口)、 IEEE1394接口和通用可編程接口GPIO。,5.5 UART內(nèi)核,UA

9、RT(Universal Asynchronous Receiver/Transmitter通用異步接收器/發(fā)生器)內(nèi)核帶有Avalon接口,為嵌入式系統(tǒng)和外部設備提供了串行字符流動通信方式,其數(shù)據(jù)以RS-232協(xié)議的形式與外界進行交互。提供可調(diào)整的波特率;可配置奇偶校驗位、停止位和數(shù)據(jù)位等。,UART內(nèi)核的結構框圖,UART內(nèi)核寄存器映射,UART內(nèi)核配置選項,1、波特率設置2、數(shù)據(jù)位、停止位、奇偶校驗位3、流控制4、Aval

10、on流控制傳輸,軟件編程,Altera提供的驅動程序執(zhí)行HAL字符模式設備驅動程序。HAL用戶應通過熟悉的HAL API函數(shù)和ANSI C標準庫函數(shù)訪問UART,而不是訪問UART寄存器。,altera_avalon_uart_regs.h 寄存器級訪問頭文件altera_avalon_uart.h, altera_avalon_uart.c HAL系統(tǒng)庫的UART內(nèi)核設備驅動程序,實

11、驗4.10:ANSI C標準庫來訪問UART;如果檢測到字符’t’,則報告檢測到字符’t’;如果檢測到字符’v’,則退出程序。,#include#include#include "system.h"int main (){ char* msg = "Detected the character 't'.\n"; FILE* fp; char prompt =

12、0; printf("Please Enter some characters: \n"); fp = fopen (UART_NAME, "r+"); //打開文件進行讀和寫,if (fp) { while (prompt != 'v') // 循環(huán)直至接收到 'v' { prompt = g

13、etc(fp); // 從UART中獲取字符 if (prompt == 't') { // 如果字符為 't' 打印信息 fwrite (msg, strlen (msg), 1, fp); } if (ferror(fp)) // 檢查錯誤是否在UART連

14、接上出現(xiàn) clearerr(fp); // 如果是,清除它 } fprintf(fp, "Closing the UART file handle.\n"); fclose (fp); } else { printf("Fail to open file...\n"); } return 0; },Sys

15、tem.h 描述的UART設備,#define UART_NAME "/dev/uart"#define UART_TYPE "altera_avalon_uart"#define UART_BASE 0x00B00840#define UART_IRQ 1#define UART_BAUD 115200#define UART_DATA_BITS 8#define UART_FIXE

16、D_BAUD 0#define UART_PARITY 'N'#define UART_STOP_BITS 1#define UART_USE_CTS_RTS 0#define UART_USE_EOP_REGISTER 0#define UART_SIM_TRUE_BAUD 0#define UART_SIM_CHAR_STREAM ""#define UART_FREQ 480000

17、00,具有Avalon接口的JTAG UART核是實現(xiàn)在PC機和FPGA上的SOPC Builder系統(tǒng)間進行串行通信的一種實現(xiàn)方式JTAG UART用來替代RS-232完成與PC主機的字符輸入/輸出, NiosII 處理器通過讀/寫控制和數(shù)據(jù)寄存器與JTAG UART核通信,5.6 JTAG-UART內(nèi)核,對于NiosII 處理器, HAL系統(tǒng)庫中包含該設備的驅動程序,允許使用ANSI C標準庫stdio.h訪問JTAG UART

18、核對PC機, Altera提供JTAG終端軟件來管理PC機與目標系統(tǒng)的連接,對JTAG數(shù)據(jù)流解碼和在屏幕上顯示字符,5.7 JTAG-UART內(nèi)核,JTAG UART核方框圖,缺省的深度值(64)IRQ門限值(8)是最優(yōu)的,不用改變,JTAG UART核配置,軟件編程,HAL用戶應通過HAL API 和ANSI C 標準庫訪問JTAG-UART,而不是訪問JTAG-UART寄存器。對JTAG UART核的操作與下列文件有關。

19、 altera_avalon_jtag_uart_regs.h altera_avalon_jtag_uart.h altera_avalon_jtag_uart.c,#include #include #include "system.h"int main(){ char *msg=“Detected the character ’t’.\n”;FILE *fp;char prompt=0

20、;printf("Please Enter some characters: \n");fp=fopen(“/dev/jtag_uart”,”r+”); //為讀寫操作打開文件If(fp){ while(prompt!=‘v’) //循環(huán)直到接收一個”v” { prompt=getc(fp); //從JTAG UART中讀取一個字符 if(prompt==

21、‘t’) //若字符是“t”,則輸出信息 { fwrite(msg,strlen(msg),1,fp); },例:使用標準庫通過JTAG UART核讀和發(fā)送一個消息,if(ferror(fp)) //檢查是否有錯誤產(chǎn)生clearerr(fp); } //若有則清除fprintf(fp,”Closing the JTAG UART file handle.\n”);fclose(fp)

22、; } else { printf("Fail to open file...\n"); } return 0;},5.7 定時器內(nèi)核,定時器可作為系統(tǒng)的周期性時鐘源(Tick);可以作為計數(shù)器測定事件發(fā)生的時間;作“看門狗”(Watchdog)。定時器內(nèi)核特性: 可控制定時器的啟動、停止或復位 兩種計數(shù)模式:單次減一和連續(xù)減一計數(shù)模式 計數(shù)器達到0時產(chǎn)生中斷請求(IRQ) 可作為看門狗定

23、時器 可選擇輸出周期性脈沖 可由軟件使能或屏蔽定時器中斷,定時器內(nèi)核結構框圖,定時器寄存器,1. 狀態(tài)寄存器(status),2. 控制寄存器(control),3. periodl & periodh 寄存器,periodl 和 periodh 寄存器一起存儲超時周期的計數(shù)值。當對此寄存器進行寫操作或內(nèi)部計數(shù)器減到0時,保存在periodl &和periodh 中的值會裝載到內(nèi)部計數(shù)器中。,4. snapl &am

24、p; snaph 寄存器,可通過對snapl & snaph 寄存器的寫操作來獲取32位內(nèi)部計數(shù)器的當前值。,5. 中斷操作,只要內(nèi)部計數(shù)器減到0且控制寄存器的ITO位設為1,定時器內(nèi)核就會產(chǎn)生IRQ.用戶可用以下任一方式應答IRQ: 清除狀態(tài)寄存器的TO位,等待下一個超時事件的發(fā)生; 通過將控制寄存器的ITO位清零來禁止中斷。,定時器內(nèi)核(interval timer)配置選項,Timeout Period: 設置peri

25、odl 和 periodh 寄存器的初始值,此值可根據(jù)系統(tǒng)輸入時鐘頻率和initial period中的設置計算獲得。,定時器內(nèi)核配置選項,Preset Configurations: 提供的預定義硬件配置:Simple periodic interrupt Full-featured Watchdog,Writeable period:主控制器可通過寫periodl 和 periodh改變向下計數(shù)周期 Readable s

26、napshot:主控制器可讀當前向下計數(shù)的值Start/stop control bits:主控制器可通過寫控制寄存器的START和STOP位來啟動后停止定時器。Timeout pulse:當定時器計數(shù)到0時將輸出持續(xù)一個周期的高電平。System reset on timeout:配置定時器用于看門狗。,當使能以下各項時:,定時器提供了硬件的寄存器級訪問和HAL層的API函數(shù): altera_avalon_time_regs

27、.h: 定義內(nèi)核的寄存器映射并提供硬件設備訪問宏定義; altera_avalon_timer.h、altera_avalon_timer_sc.c、 altera_avalon_timer_ts.c、 altera_avalon_timer_vars.c 實現(xiàn)了HAL系統(tǒng)庫的定時器設備驅動程序(在components/altera_avalon_timer中),軟件設計,軟件設計,HAL API提供如下兩種定時器

28、設備的驅動程序: 系統(tǒng)時鐘定時器---該驅動程序支持報警(alarms)。 時間戳定時器 -----該驅動程序支持高精度的時間測量。HAL特定的訪問定時器設備的API函數(shù)在components/altera_hal/HAL/inc/sys/alt_alarm.h和sys/alt_timestamp.h中定義。,,【實驗4.5】利用系統(tǒng)時鐘服務產(chǎn)生1s的周期性事件,并借此控制LED閃爍,#include

29、 #include "system.h" //包含基本的硬件描述信息#include "altera_avalon_pio_regs.h" //包含基本的IO寄存器信息#include "alt_types.h"

30、 //Altera定義的數(shù)據(jù)類型#include "sys/alt_alarm.h" //系統(tǒng)時鐘服務頭文件,#ifndef LED_PIO_BASE //這是LED_PIO核的基地址#define LED_PIO_BASE 0xffffffff //user&#

31、39;s definition here#endif#if LED_PIO_BASE == 0xffffffff#error "No definition of LED_PIO core...\n"#endif#define LEDCON 0xff static alt_alarm alarm; //按調(diào)用API函數(shù)規(guī)定定義的變量static unsigned char led

32、= 0xff;,功能:按調(diào)用規(guī)定系統(tǒng)時鐘回調(diào)函數(shù),在該函數(shù)中實現(xiàn)用戶功能,入口參數(shù):context,系統(tǒng)傳給回調(diào)函數(shù)的參數(shù) 出口參數(shù):返回下一次的系統(tǒng)時鐘服務的周期值,alt_u32 my_alarm_callback (void* context){ if(led == 0xff){ led = 0x00; }else{ led = 0xff; } IOWR_ALTERA_AVALON_P

33、IO_DATA(LED_PIO_BASE,led); //操作IO口 return alt_ticks_per_second();},功能:初始化LED_PIO為輸出,其余輸入,屏蔽中斷,清邊沿捕獲寄存器,void InitPIO(void){ /* LED_PIO為輸出,其余輸入 */ IOWR_ALTERA_AVALON_PIO_DIRECTION(LED_PIO_BASE, LEDCON); /*

34、禁止所有PIO中斷 */ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(LED_PIO_BASE, 0x00); /* 清清邊沿捕獲寄存器 */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(LED_PIO_BASE, 0x00);},int main() { InitPIO(); IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,0xff

35、); //滅LED printf("test alarm...\n"); //打印提示信息 printf("alt_ticks_per_second() is %ld",

36、 alt_ticks_per_second()); if (alt_alarm_start (&alarm,alt_ticks_per_second() //啟動系統(tǒng)時鐘 ,my_alarm_callback,NULL) < 0) { printf ("No system clock availa

37、ble\n"); } while(1); //等待時鐘事件發(fā)生 return 0; },5.8 System ID 內(nèi)核,SOPC Builder 生成NiosII 系統(tǒng)時,將為每個Nios II系統(tǒng)生成一個標識符,供編譯器和用戶辨別所運行的程序是否與目標系統(tǒng)匹配。當程序運行在與之不匹配的系統(tǒng)上時會產(chǎn)生不可預測的結果。系統(tǒng)ID內(nèi)核寄存器包括ID寄存器(SOPC Builder系統(tǒng)ID)和timestamp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論