玩轉Zynq連載31——[ex53] 基于Zynq PS的EMIO控制 更多資料共享 騰訊微云鏈接:https://share.weiyun.com/5s6bA0s 百度網盤鏈接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取碼:ld9c 參考文檔《玩轉Zynq-基礎篇:Zynq PS的GPIO外設.pdf》。 關于EMIO和MIO,這里多啰嗦兩句。簡單的理解,MIO是PS系統原生的,和PL沒啥關系;但是EMIO是PS借PL的引腳用,所以它們就有千絲萬縷的關系,PL的工程里面勢必要做點什么。MIO在PS系統里面分配好對應的信號功能后,在PL的代碼里面就不需要寫任何的邏輯,甚至引腳分配都不需要(生成的PS系統會自動分配)。但是EMIO就要在PS的系統中引出,然后在PL頂層源碼中申明端口類型,做引腳分配(因為EMIO用的就是PL的引腳)。 關于MIO和EMIO的關系,更形象直接的可以示意如圖所示。MIO和EMIO都是PS的一部分,但是MIO可以直接連接到Zynq芯片的引腳上,和PL無關;而EMIO需要通過PL的IO才能連接到Zynq芯片的引腳上。EMIO的存在,其實是給用戶更大的PS的GPIO擴展的靈活性,這也是FPGA+ARM獨有的架構。因此,EMIO怎么用,很有必要好好玩玩。
打開ZYNQ7 Processing System的配置頁面Peripheral I/O Pins,勾選GPIO EMIO選項,查看Periperals最右側的EMIO列,對應的EMIO顯示按鈕變綠了,則表示該EMIO功能開啟,EMIO引腳將會引出到PS系統。
完成配置后,回到ZYNQ7系統框圖中,可以看到多了一個名為GPIO_0的接口。
展開GPIO_0接口,實際上有3組64bit的信號,分別代表input(GPIO_I)、output(GPIO_O)和inout(GPIO_T)。在實際使用中,根據我們的引腳方向,連接對應位的引腳即可。例如,GPIO_I[0]、GPIO_O[0]和GPIO_T[0]實際上對應的都是一個EMIO,如果我只用這個EMIO連接一個作為output的LED,那么我在PL上只要引出GPIO_O[0]并作引腳分配就可以了。
選中GPIO_0,右鍵單擊,彈出菜單中點擊Create Interface Port...,引出一個port用于PL工程的頂層連接。
可以命名為GPIO_EMIO。
完成GPIO_EMIO引出后如圖所示。
在Sources --> IP Sources中選擇Block Designs -->zstar_zynq_ps,單擊右鍵,彈出菜單中選中Generate Output Products...。
接著我們可以再次操作,單擊右鍵菜單的Create HDL Wrapper...選項。
打開后,看到PS系統的例化部分如圖所示,可以復制到我們的新建的頂層源碼中,在頂層源碼中重新設置接口映射。
在實例zstar_ex52中,我們直接使用PS系統生成的zstar_zynq_ps_wrapper.v模塊做頂層模塊,但是這樣的方式其實對于含有PL代碼的工程來說靈活性不夠好。我們更建議大家把這個zstar_zynq_ps_wrapper.v模塊里面例化的PS系統例化到我們自己為PL工程專門新建的頂層源碼中,在這個頂層源碼中,我們也可以例化其它的PL邏輯模塊。 廢話說了,先新建一個zstar.v的Verilog模塊,然后做如下編輯。
若要將新建的zstar.v模塊作為PL工程的頂層模塊,需要先選中zstar.v模塊,右鍵單擊選中菜單項Set as Top。
同時需要打開Sources --> Constraints - constrs_1下的約束文件zstar.xdc,增加led[2:0]的引腳約束。
參考文檔《玩轉Zynq-工具篇:導出PS硬件配置和新建SDK工程.pdf》。 SDK中,新建Empty的模板工程,名稱為GPIO_EMIO_project。 展開新建的工程GPIO_EMIO_project,選中文件夾src,單擊右鍵,彈出菜單中選擇New --> Source File。 新建一個名為main.c的Default C source template源文件。 輸入EMIO控制的bit2-0引腳的程序,程序中實現EMIO0、EMIO1和EMIO2循環拉高,逐次點亮3個LED中的1個。
在Zstar板子上,設置跳線帽P3為JTAG模式,即PIN2-3短接。 接著參考《玩轉Zynq-工具篇:SDK在線運行裸跑程序.pdf》將zstar.bit文件和GPIO_EMIO_project.elf文件燒錄到Zynq中運行起來。 程序運行起來后,我們就可以看到Zstar板上PL側的3個LED指示燈D3、D2和D1逐個閃爍起來。 騰訊微云鏈接:https://share.weiyun.com/5s6bA0s 百度網盤鏈接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取碼:ld9c |