使用AVR單片機配置FPGA
配置文件
Altera公司的開(kāi)發(fā)工具Quartus II和MAXPlus II可生成多種配置文件,包括sof、pof、hex、rbf、ttf等。該配置方案中采用的是rbf文件,rbf文件為二進(jìn)制文件,包含了全部配置數據,1字節的rbf數據包含8bit的配置數據,配置時(shí)最低位先由低位到高位依次裝入。
軟件設計
使用單片機對FPGA的設計關(guān)鍵是軟件設計。在雙任務(wù)配置中,兩個(gè)任務(wù)的配置數據分別存放于不同起始地址的連續存儲器區域中。單片機上電復位后,進(jìn)入按鍵查詢(xún)狀態(tài),檢測到按鍵按下后,單片機從相應起始地址中讀出數據并對FPGA進(jìn)行配置。配置過(guò)程按照PS方式的時(shí)序要求進(jìn)行,配置完成后重新進(jìn)入按鍵查詢(xún)狀態(tài)??刂瞥绦蛄鞒虉D如圖3所示。
圖3 控制程序流程圖
在雙任務(wù)配置中,兩個(gè)任務(wù)的配置數據分別存放于指定的地址中,由引導程序從指定地址中讀出數據并對FPGA進(jìn)行配置。引導程序和rbf文件(配置數據)的合并是軟件設計的關(guān)鍵,以下詳述其處理過(guò)程。
(1) 將引導程序在ICCAVR下編譯并生成mcu.hex,hex文件格式是由Intel公司定義的,是按地址排列的數據信息,數據寬度為字節,所有數據使用16進(jìn)制數字表示. 以下是一個(gè)例子。
:10008000AF5 F67F0602703E0322CFA92007780C361
:1000900089001C6B7EA7CA9200 FE10D2AA00477D81
:0B00A00080FA92006F3600 C3A00076CB
:00000001FF
第一行,“:”符號表明記錄的開(kāi)始。后面的兩個(gè)字符表明記錄的長(cháng)度,這里是10h。后面的四個(gè)字符給出調入的地址,這里是0080h。后面的兩個(gè)字符表明記錄的類(lèi)型后面則是真正的數據記錄, 最后兩位是校驗和檢查,最后一行是結束串,總寫(xiě)成這樣;
(2)將fpga1.rbf改為fpga1.bin,使用“超級單片機工具”將fpga1.bin轉換成起始地址為0x0273(mcu.hex的數據長(cháng)度)的FPGA1.hex;
(3)將fpga2.rbf改為fpga1.bin,使用“超級單片機工具”將fpga2.bin轉換成起始地址為0x3bd7(mcu.hex和fpga1.hex的數據長(cháng)度和)的FPGA2.hex;
(4)將刪除結束串后的mcu.hex和fpga1.hex與FPGA2.hex依次合并成config.hex;
(5)將config.hex用下載線(xiàn)下載到ATmega32單片機中。
結論
以上方案可適用于3.3V和5V系統的FPGA配置,無(wú)須擴展EEPROM,還能實(shí)現多任務(wù)配置。
評論