|
原諒我記憶力不好。。。花了好久弄明白的東西才十個(gè)小時(shí)不到就忘記了,所以趁現(xiàn)在記得趕緊記錄下來(lái)。本文內(nèi)容:重建de1-soc中HPS-FPGA工程。
PS:原工程在http://pan.baidu.com/s/1gdkoniN,我用的是lab\SW\de1_soc_lab3_hardware和de1_soc_sw_lab3。最后的結(jié)果應(yīng)該是流水燈,60次。
打開(kāi)Quartus ii 軟件,新建工程Qsystrying,選擇5CSEMA5F31C6,新建verilog HDL文件Qsys.v,文件內(nèi)容copy de1_soc_traning\lab\SW\de1_soc_lab3_hardware\ghrd_top.v文件內(nèi)容,注意模塊名改為Qsys,實(shí)例化處soc_system改為sys。ghrd.v中只有一個(gè)模塊,一次模塊實(shí)例化(注意原模塊實(shí)例化名字是soc_system,w我的Qsys系統(tǒng)名是sys)
建立Qsys系統(tǒng)sys.qsys。
1,注意先copy de1_soc_traning\lab\SW\de1_soc_lab3_hardware\ip文件夾到Qsys工程下。ip文件夾中是四個(gè)ip核,建立Qsys系統(tǒng)中除Quartus自帶ip核外還應(yīng)添加其他需要的ip核,可以自己寫(xiě),也可以從網(wǎng)上下載。
2,Quartus軟件下tools->Qsys或者直接快捷鍵,依次添加所需模塊并連線,最后generate產(chǎn)生相應(yīng)的文件。注意設(shè)置每一個(gè)模塊的參數(shù)(這里面的東西好多,我自己也不完全懂)。如果只是熟悉整個(gè)過(guò)程,可以直接copyde1_soc_traning\lab\SW\de1_soc_lab3_hardware\soc_system.qsys文件,文件名改成sys.qsys,同樣需要Quartus軟件下tools->Qsys,打開(kāi)后generate產(chǎn)生與qsys同名的文件夾(這里是sys文件夾)及其他文件。產(chǎn)生的文件中需要特別注意的是.sopcinfo文件、sys\synthesis\sys.qip、sys\synthesis\sys.v(Qsys.v文件中實(shí)例化的sys模塊原型就在這個(gè)sys.v中),sys\synthesis\submodules\hps_sdram_p0_pin_assignments.tcl文件。
3,執(zhí)行hps_sdram_p0_pin_assignments.tcl文件。Quartus->tools->Tclscripts,run hps_sdram_p0_pin_assignments.tcl文件。
4,添加相應(yīng)的文件,具體如圖:(其實(shí)就是用到的ip核的.v文件和Qsys系統(tǒng)生成的.v和.qip文件)
5,分析和綜合
6,執(zhí)行引腳分配.tcl腳本文件,或者自己用pin planner分配引腳。這里如果只是熟悉過(guò)程就直接從原項(xiàng)目
de1_soc_lab3_hardware中的工程導(dǎo)出別人的引腳分配的TCL文件。具體方法是:打開(kāi)工程后,Assignment->pinplanner,file ->export,選擇文件類(lèi)型tcl,名字改為Qsystrying(其他名字也可以)。復(fù)制該文件到我們的Qsystrying工程目錄;氐絈sys工程的Quartus界面,同樣執(zhí)行Qsystrying.tcl文件,就會(huì)發(fā)現(xiàn)引腳分配好了。
7,Compile Design。之后就是下載到FPGA的板子上。此時(shí)看到所有的LED燈都亮。
以上這些僅僅是搭建Qsys系統(tǒng),F(xiàn)PGA和HPS在Qsys系統(tǒng)上連接,工程文件僅僅是指定各個(gè)輸入輸出口和引腳分配。真正功能的實(shí)現(xiàn)是在HPS中的ARM 上跑的程序,具體的就在.c文件中了。
1,產(chǎn)生HPS頭文件。具體是利用C:\altera\13.1\embedded的Embedded_Command_Shell.bat運(yùn)行g(shù)enerate_hps_qsys_header.sh腳本文件(該腳本文件在de1_soc_traning\lab\SW\de1_soc_lab3_hardware中,注意把soc_system.sopcinfo改為自己的.sopcinfo文件,這里是sys.sopcinfo)。
2,生成可執(zhí)行文件。新建或者直接復(fù)制de1_soc_traning\lab\SW\de1_soc_sw_lab3中的main.c文件,可以打開(kāi)看看文件內(nèi)容就是跑馬燈程序,里面值得注意的是FPGA上地址映射到HPS中的地方,其他的比較容易理解。新建或者直接復(fù)制de1_soc_traning\lab\SW\de1_soc_sw_lab3中的Makefile文件,把Makefile,main.c,hps_0.h文件放在一個(gè)目錄下。用C:\altera\13.1\embedded的Embedded_Command_Shell.bat,make一下產(chǎn)生my_first_hps-fpga文件。
3,利用U盤(pán)或以太網(wǎng)方式copy my_first_hps-fpga文件到SD卡,putty連接,運(yùn)行my_first_hps-fpga。此時(shí)看到流水燈。
總結(jié):
自己要做的--------FPGA這塊:ip核,Quartus Qsys系統(tǒng),工程.v文件,分配引腳的tcl文件
----------HPS 這塊:Makefile,main.c,generate_hps_qsys_header.sh
最后需要的---------.sof文件下載進(jìn)FPGA,可執(zhí)行文件進(jìn)SD卡中執(zhí)行
拓展:自啟動(dòng)。
FPGA:.pof文件固化到FPGA中,注意我們的de1-soc用的不是EPCS,而是EPCQ,具體方式見(jiàn)用戶手冊(cè)倒數(shù)第二章。
HPS:在/etc/rcS.d中添加需要自動(dòng)執(zhí)行的shell文件。這里可以新建shell文件,用shell文件執(zhí)行我們的my_first_hps-fpga可執(zhí)行文件。
之后再上電就會(huì)自啟動(dòng)流水燈了。
|
|