從Quartus II 11.0開始,喜新厭舊的Altera就不厭其煩的炒作SOPC Builder的替代者Qsys。記得去年參加他們的研討會時就已經炒得火熱,如今12.0sp2都已經release了,12以后更是完全摒棄了SOPC Buider,如果再不加緊找個理由上Qsys練練手,咱可就要OUT了。 正好近期對uC/OS非常感興趣,苦于手上沒有一款比較高端的板子用于實踐。于是通過層層關系最終在Altera的大學計劃經理John處討得一套TerasIC的DE2-115,板載EP4CE115F29C7N器件,豐富的片上資源和外設足以應付各種功能需求。上個圖,讓各位看官也垂涎三尺。 圖1 廢話就此打住,后面要上電有營養的文字。話說特權同學也是第一次接觸Qsys,雖然這兩天抽空惡補了一下Qsys的各種pdf,但畢竟學海無涯苦作舟,咱也就多懂點皮毛,提前班門弄斧一下,只是實實在在的把自己知道的、明白的、領會的一一道來,期間肯定有疏漏和不妥之處,甚至也會帶些疑問而來,還請高手不吝惜鍵盤跟帖指點。 第一步當然是新建工程,這等小兒科步驟不詳究,直接步入主題。如圖2所示,兩種方式均可打開Qsys。 圖2 進入Qsys后,如圖3所示,界面窗口的布局內容多少還有些似曾相識,畢竟還是SOPC Builder一脈相承的,一個最大的變化時Qsys tabs的選項要比SOPC Buider多得多,Qsys的更多系統個性化編輯和設置也都得益于此了。 圖3 初次打開Qsys,System Content中默認已經添加了一個孤零零的CLOCK組件,其他啥也沒有,光桿司令只是個擺設,啥活干不了。于是乎,咱覺得在Component Library中各種查找,添加了幾個常用組件,如NIOS II處理器、JTAG UART、定時器TIMER、8bit輸出PIO、system ID和200KB的片內RAM。如圖4所示,這些常用的組件各就各位,基本就可以搭建起一個最小嵌入式系統了,至少是可以寫代碼在線運行程序的。 圖4 不過,看圖4咱可就有點看不懂了,SOPC Builder可不是這樣,Connections應該是完全在添加組件過程中自動互聯上才對的,而Qsys則一片空白,貌似啥都不連接,別說,還真這么回事。那么就這么著把,絕對不可以,人家系統肯定罷工。怎么辦?自己動手,豐衣足食!找了相關資料,都說Qsys可以很智能的進行組件的互聯,愣是沒找到一個“智能按鍵”讓他們自動互聯,看來Altera把這項考驗真水平的活都下放給最智能的人腦來干了,能不智能嗎?哈哈,好了,還好特權同學底子不差,雖然以前都讓SOPC Buider自個連接從不干預,但是實際接口都是牢記于心的,三下五除二便連接成功。如圖5所示,看到小圓圈點點空心實心就會變化,實心代表連接上了。這連接的活可好玩了,一點不比那些年不知道禍害了多少有志青年的“連連看”差多少,那比得是速度,咱比的是準確。系統的連接其實也非常簡單,我們的時鐘clk和復位reset都沒有做太復雜,都是clk_0組件輸出,所以所有的組件都和clk_0的時鐘復位連接上就對了;CPU的數據存儲器和代碼存儲器都必須由片內RAM來擔當,所以nios2_qsys的data_master和instruction_master均與代表onchip_mem的從機總線s1連接上。而其他作為總線slave的外設均連接到nios2_qsys的data_master上即可。 圖5 另外,要說明的是作為系統與外部連接的接口不像SOPC Buider一樣直接引出了,需要設計者特別設置一下。如圖6所示,選擇Export列的屬性為*_external connection,然后該接口前面會出現一個export的圖標。 圖6 接著我們還要雙擊打開nios2_qsys組件,將其Reset Vector和Exception Vector均設為onchip_mem。如圖7所示。 圖7 就此,一個漂亮的測試系統搭建完畢,后面的事情就是分配地址、中斷優先級等,這個可以如同SOPC Builder一樣使用菜單欄上的自動分別選項一鍵分配。特權同學就常常這么干,咱對地址還真沒講究,中斷優先級有時還可以根據需要調整一下。 前面提到了Qsys tabs是一大特色,這里不一一細說,偷懶貼幾張圖。大家自己使用的時候可以慢慢體味。如圖8,Address Map對地址的管理一目了然,而且對于不同的Master可以有不同的地址空間映射。 圖8 如圖9所示,System Inspector中羅列所有的信號接口以及相關屬性參數,甚至可以在此處進行修改。 圖9 如圖10所示,HDL Example中直接給出了當前系統的例化模板,直接復制到工程頂層模塊后進行修改即可,這比之前專門要到工程目錄下找相關文件查看要方便得多。 圖10 最后,如圖11所示,Generation里可以選擇系統仿真、綜合以及各種輸出的相關設置,最后點擊右下角的Generate即可啟動當前系統的生成。大家可別忘了在Output Directory中設置后系統輸出路徑。 圖11 |