基于JTAG接口實現(xiàn)ARM的FPGA在線配置
?、谧止?jié)碼(Byte—Code)格式文件,STAPL源文件編譯好之后的字節(jié)碼文件,文件后綴名是“.jbc”。對于同樣的配置信息,該格式比.jam格式體積小,節(jié)省存儲空間;其缺點是,無法直接閱讀其中的配置信息。
與之對應,Jam Player也有兩種:普通Jam Player,負責對.jam文件的解釋;Jam Byte一Code Player,負責對.jbc文件的解釋。從AItera*****上可以免費下載到用C語言編寫的兩種Player源代碼。
4 系統(tǒng)設計與實現(xiàn)
4.1 系統(tǒng)硬件設計
系統(tǒng)硬件連接方案如圖2所示。系統(tǒng)中只使用JTAG配置方式,所以與AS、PS相關的nCONFIG、MSELO和MSEL1引腳都不使用,而將nCONFIG拉高,MSELO和MSEL1接地。DATA0和DCLK引腳可以任意配置,在這里都接地。使用S3C2410的通用引腳GPB7、GPB8、GPB9、GPBlO引腳分別作為JTAG接口的TMS、TDl、TCK和TDO。
4.2 系統(tǒng)軟件設計
4.2.1 生成Jam配置文件
使用Jam STAPL進行JTAG配置,需要有Jam配置文件。集成開發(fā)環(huán)境QuartusII默認生成的是.sol和.pof格式的配置文件,要生成.jam和.jbc文件,可以使用2種方法:
第1種方法,在工程編譯之前設置QuartusII的生成配置文件選項。在QuartusII的主菜單中,選擇【Assign—ments】→【【)evice】菜單,進入【Setting】窗口,單擊“Device.Pin Options…”按鈕,在彈出的對話框中選擇“Program—ming Files”標簽,在該標簽頁中選擇.jam或者.jbc文件格式,單擊“0K”按鈕即可。
第2種方法,編譯完成后利用QuartusII自帶的文件格式轉(zhuǎn)換工具,將.sof或.pof文件轉(zhuǎn)換為.jam或.jbc文件類型。在QuartusII的主菜單中,選擇【File】→【ConvertProgramming Flies】菜單,進入【Convert ProgrammingFiles】窗口。在該窗口的“Programming file type'’中選擇.jam或者.jbc類型,在“File name”中指定文件保存路徑和文件名(默認使用與.sof或.pof同路徑同名),最后單擊“OK”按鈕,即可生成.jam或者.jbc配置文件。
4.2.2 移植Jam Player
Altera公司提供的Jam Player源程序文件包含了DOS、Windows和Unix三種平臺的代碼。在類似Unix的Linux平臺中使用,必須進行定制和移植。
Jam Player源程序組織結(jié)構(gòu)如圖3所示。與配置平臺的I/O處理相關的功能都安排在jbis—tub.c文件中,使用Jam Player的用戶只需要根據(jù)平臺和硬件環(huán)境修改jbistub.c中的函數(shù),而不需要修改其他的文件。
將Jam Player移植到嵌入式Linux中,主要進行下列的定制:
?、俑钠脚_預定義環(huán)境,添加預處理語句,去除不必要的源代碼;
?、趯TAG信號映射到具體硬件引腳;
③定制錯誤信息輸出方式;
④根據(jù)具體微處理器的處理能力,定制延時函數(shù)。
關于更詳細的定制和移植過程可參考文獻[7]和[8]。
為了幫助Jam Player移植過程,Altera公司提供了調(diào)試和驗證使用的idcode文件。該文件有.jam格式和.jbc格式,分別供移植普通Jam Player和Jam Byte一CodePlayer使用。其功能都是讀取目標設備的IDCODE(每種型號的FPGA芯片都有一個與其一一對應的IDC0DE,可參見芯片的數(shù)據(jù)手冊)。如果移植成功,Jam Player會將讀取的IDCODE和對應的芯片型號打印出來;否則輸出詳細的相關錯誤信息,以供調(diào)試使用。
4.2.3 JTAG驅(qū)動程序
由于Jam Player運行在嵌入式Linux環(huán)境中,無法直接訪問ARM芯片的引腳寄存器,也就無法直接操作引腳的輸入輸出。所以還必須為用于JTAG接口的引腳編寫驅(qū)動程序,將它們封裝成Jam Player可以讀寫的字符型文件。
該驅(qū)動遵守普通Linux字符型文件驅(qū)動編寫規(guī)則,無需向系統(tǒng)申請中斷和實現(xiàn)中斷函數(shù),最關鍵的就是對引腳讀寫時,要符合JTAG接口引腳的時序控制。JTAG接口的引腳時序如圖4所示。從圖中可知,對于ARM的JTAG接口,TDI和TMS輸出信號是在TCK時鐘信號的下降沿鎖存的,而TDO反饋信號是在TCK時鐘信號的上升沿有效。
fpga相關文章:fpga是什么
評論