FreeARM7 IP核的微處理器邏輯擴展與驗證
2.1 微處理器lP核改進
FreeARM7 IP核是微處理器的核心部分,不能直接作為微處理器使用,其原因是數據總線需要讀取ROM內的數據、本文選擇Philips公司32位ARM7微處理器LPC2101作為原型設計。LPC2101帶有適當的存儲資源,內嵌2 KB片內靜態RAM和8 KB的Flash存儲器,且軟件可移植性好,工作可靠。參考LPC2101工作原理,當FreeARM7的輸出信號ram_addr的最高4位為4'b0時,表示數據總線需要讀取ROM的數據。為解決該問題,新增一個wrap文件lpc2101_arm.v完成該功能。它的作用是:當ram_addr[31:28]==4'b0時,該邏輯直接從rom_en、rom_addr、rom_data的接口中讀取ROM數據,送入ram rdata。
2.2 USB1.1設備控制器
本文選用的USB設備控制器是課題組早期項目之一,它是由Opencores網站提供的初級開源版本改進而成,其結構如圖2所示。IP核支持低速和全速模式,共有1個控制傳輸端點(EP0)、7個其他可配置端點,且缺少微處理器也能響應主機對設備的枚舉。收發器電路主要完成模/數信號轉換,即在OUT事物中將模擬信號D+和D-轉換成串行接口引擎模塊可識別的數字信號rxd、rxdp和rxdn,在IN事物中將數字信號txdp和
txdn在使能信號txoe的控制下轉換成模擬信號D+和D-;串行接口引擎模塊主要完成收發包,根據傳輸方向可分為接收和發送,主要包括總線檢測、同步檢測、時鐘恢復、不歸零反向編碼和解碼、位填充及位去除、數據的串/并轉換;協議層包括協議引擎態機、組包、解包、FIFO控制器;端點O控制器主要負責響應主機標準請求;描述符RAM存儲了設備的各種描述符;其他端點控制器及FIFO提供了配置接口,目的是預留給開發者進行IP核移植。本文引用地址:http://www.104case.com/article/162272.htm
2.3 代碼下載控制邏輯
該邏輯主要功能是在代碼下載模式下,將雙端口RAM中的匯編程序轉移到ROM中,其主要任務是產生讀雙端口RAM使能信號和地址信號,以及寫ROM的使能信號和地址信號。在硬件邏輯中通過計數器實現。當系統復位或退出代碼下載模式時,計數器:rom_wr_cnt清零,否則當USB接收完一個包(64字節)后,置計數器使能信號cnt_vld有效,rom_wr_cnt開始計數。cnt_vld直接作為讀雙端口RAM的使能信號,cnt_vld兩級緩存后作為寫ROM的使能信號。同時,rom_wr_cnt的低8位直接作為讀雙端口RAM的地址信號,rom_wr_cnt計算結果經過兩級緩存后作為寫ROM的地址信號。當64字節轉移完畢后,置cnt_vld無效,此時rom_wr_cnt鎖存當前值,等待下一個包接收完畢后再次置cnt_vld有效,代碼下載控制邏輯就將下一個包的數據追加到ROM中,反復進行就完成了代碼經由USB接口下載至ROM中。
3 嵌入式代碼的開發
3.1 uVision3.63環境設置
利用μVision3.63新建一個工程,選擇器件類型為NXP(founded by Philips)系列的LPC2101,在默認工程環境的基礎上做如下確認:
①在“output”選項卡中選中“Create HEX Flie”,確保產生可供下載的機器碼。
②在“Target”選項卡中選擇Code Generation為“ARM-Mode”,確保以ARM指令集為依據產生機器碼。
③在“C/C++”和“Asm”選項卡中分別去選“EnableARM/Thumb Interworking”,確保生成的代碼只包含ARM指令。
評論