ZYNQ SOC 入門基礎(二)MIO 實驗

2021-08-30 02:12:02 字數 2577 閱讀 3412

zynq7000 系列晶元有54個mio(multiuse i/o),它們分配在gpio的bank0和nbank1 隸屬於ps的部分,這些io與ps直接相連。不需要新增引腳約束,mio訊號對pl部分是透明的,不可見。所以對mio的操作可以看是對純ps的操作。

可以看到 bank0和bank1屬於mio,一共有54個埠。bank2和bank3屬於emio,一共有64個埠。

bank0:mio[31:0]

bank1: mio[53:32]

bank2: emio[31:0]

bank3: emio[63:32]

其中bank0有32個gpio引腳,bank1有22個gpio引腳,共54個gpio引腳直接通過mio連線到ps上,每個引腳可以通過暫存器設定來確定該引腳為輸入、輸出或者中斷。因為54個mio引腳直接連線到ps上,像其他普通arm一樣可以直接通過sdk進行程式設計。

bank2和bank3通過emio介面將cpu的gpio連線到pl部分的引腳上,其中每個bank各有32個引腳。通過emio擴充套件的gpio連線到pl上,可以在pl部分進行邏輯設計,進行特定功能的ip核定制。然後在ps部分,想控制普通的mio一樣進行程式設計。ui那次,使用emio引腳必須通過block dedign 金總設計,然後再ps部分使用sdk進行程式設計控制

data_r0: data_r0 暫存器是讀取gpio引腳值暫存器,不論該gpio引腳配置為輸入還是輸出,都能正確的讀取該gpio引腳值。如果該引腳的功能沒有配置為gpio功能,讀取的值為隨機值,因為該暫存器只能讀取gpio引腳值。

data: 當gpio引腳配置為輸出時,data暫存器的值是要輸出到gpio引腳上的數值。當讀取該暫存器的數值時,結果是前一次寫入data暫存器裡的數值,而不是當前gpio引腳的數值。

mask_data_lsw/mask_datamsw:  mask_data_lsw/mask_datamsw 是傳統的資料暫存器和遮蔽暫存器的結合,該暫存器為32為,分成高16位和低16位,其中高16位作為傳統的mask使用,低16位作為傳統的data使用。因此,mask_data_lsw是對gpio的低16位引腳進行設定和遮蔽暫存器。當某位在mask_data_lsw暫存器的高16位被遮蔽時,即使修改mask_data_lsw的低16位也不影響該暫存器的值。

dirm: dirm暫存器是方向控制暫存器,控制gpio的輸入或者輸出,該暫存器值不影響輸入,即gpio輸入功能時鐘有效。當dirm[x] = 0 時,輸出無效。

oen: oen是輸出使能暫存器,當gpio引腳被配置為輸出引腳時,該暫存器控制該引腳是否輸出;當被配置為輸出禁止時,該引腳為三態;當oen[x] = 0時輸出無效。

gpio slcr: mio的每個引腳都可以配置乘其他的功能,因此,在對mio引腳進行程式設計時,首先要把對贏得mio引腳設定乘gpio功能,同時設定對應的電平和是否上拉等,每個引腳對應的暫存器進行設定,這些暫存器是系統控制暫存器(slcr)mio_pin_x.

與mio大部分類似,但是以下幾點需要注意。

在公尺聯絡列的開發板上有乙個mio是與開發板上的乙個ld9相連線的,這個mio就是mio7。實驗通過操作該mio來實現ld9的閃爍。

step1: 新建乙個名稱為miz_sys的工程,正確配晶元型號,正確配置時鐘頻率與記憶體。

step2;:單擊 create block design,建立乙個bd檔案,並命名為system.

step3:加入乙個zynq cpu ip,正確配置時鐘頻率核記憶體型別。

step4: 由於本小節需要用到mio介面,因此需要確保mio介面已經勾選(預設勾選)

step5: 單擊ok 後退出,系統整體電路如下。

step6: 右擊 system.bd, 單擊 generate output products。 

step8:file->export->export hardware。 

step9:勾選 include bitstream 直接單擊 ok。

step10:file->launch sdk 載入到 sdk,單擊 ok。 

step1: 在sdk介面中,新建乙個名稱為mio_test的工程

step2: 建立乙個空的工程

step3:新建乙個main.c檔案

step4:輸入以下程式

#include "xgpiops.h" //此標頭檔案中包含了關於gpio操作的相關定義與函式

#include "sleep.h" //延遲或者定時函式標頭檔案

int main()

return 0;

}

MVC基礎入門(二)

mvc在學習 headfirst 的時候,就接觸過了。對於這個龐大的模式。非常的感興趣。mvc就是設計模式的昇華。在沒有接觸過mvc的時候,一直都是在使用的三層架構,使用的ubd三層來做專案。對於這個新接觸的名詞,還是很陌生的。所以需要來逐漸的來學習,如何使用mvc。首先,mvc是在web開發上面提...

Python入門基礎(二)

內容導航 1.列表,元組操作 2 字典操作 3.檔案操作 1.列表,元組操作 列表的建立 names marry jane kangkang lisa print names print names 0 通過下標訪問列表中的元素,下標從0開始計數 print names 1 代表最後乙個元素 for...

PHP基礎入門(二)

一 php中的類和物件 關鍵字 class 類名 類名命名規則和變數名一樣,一般以大寫字母開頭。物件是類的例項,要建立乙個類的例項,必須用 new 關鍵字。類應在被例項化之前定義。物件名 new 類名 可以不加小括號。class peo xiaoming new peo 例項化的物件 三個分別是,p...