最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

SoC系統(tǒng)設(shè)計(jì),基于OR1200開(kāi)源32位軟核處理器wishbone總線系統(tǒng),實(shí)現(xiàn)uart gpio 定時(shí)器

2023-04-15 21:00 作者:chuanyi_wang  | 我要投稿

摘要

?????SoC是在單個(gè)芯片上集成數(shù)字、模擬電路、CPU、DSP等各種模塊,實(shí)現(xiàn)一個(gè)系統(tǒng)的功能,集成度高、可靠性好、成本低。本設(shè)計(jì)為一個(gè)基于OR1200的系統(tǒng)設(shè)計(jì),各模塊之間采用wishbone總線連接,所使用的主要模塊有GPIO、on chip memory、PLL、定時(shí)器模塊(PTC)、串口(uart16550)、外部中斷模塊。系統(tǒng)軟件實(shí)現(xiàn)的功能為通過(guò)按鍵控制LED燈,通過(guò)中斷,在中斷服務(wù)函數(shù)中通過(guò)串口發(fā)送數(shù)據(jù),通過(guò)定時(shí)器產(chǎn)生一個(gè)PWM波,來(lái)調(diào)節(jié)LED燈的亮度。

設(shè)計(jì)工程源碼聯(lián)系 企鵝號(hào)?3270516346

一、系統(tǒng)總體功能概述

1、系統(tǒng)硬件模塊

????OR1200處理器

????wishbone總線

????定時(shí)/計(jì)數(shù)器模塊(PTC)

????串口模塊(UART

????鎖相環(huán)模塊(PLL)

????GPIO接口模塊

????片上存儲(chǔ)器模塊(on chip memory

2、各模塊連接

3、系統(tǒng)總體功能

?????將GPIO配置為雙向端口,將GPIO的低8位定義為輸出,并連接到LED燈上,高八位定義為輸入并連接到按鍵上,通過(guò)按鍵控制LED的亮滅。啟用外部中斷,當(dāng)輸入為上升沿時(shí)觸發(fā)中斷,在中斷服務(wù)函數(shù)中,通過(guò)串口向終端發(fā)送數(shù)據(jù)。啟用定時(shí)器,使用定時(shí)器產(chǎn)生PWM波,將定時(shí)器PWM的輸出連接到LED上,控制LED的亮度。通過(guò)PLL模塊來(lái)調(diào)節(jié)系統(tǒng)時(shí)鐘頻率為25MHz。

二、最小系統(tǒng)模塊設(shè)計(jì)

1、OR1200

1、OR1200是OR1000的一種實(shí)現(xiàn),源于OpenRISC項(xiàng)目,免費(fèi)開(kāi)源。

2、OR1200采用數(shù)據(jù)和指令分離的哈佛體系結(jié)構(gòu),為32位RISC處理器,所以O(shè)R1200占用兩個(gè)主端口,rim和rdm端口,分別為指令和數(shù)據(jù)總線。

3、OR1200支持中斷、電源管理燈多種功能

2、wishbone

1、wishbone總線是Silicore公司推出的片上總線標(biāo)準(zhǔn),被opencore組織采用并維護(hù)。

2、wishbone支持8個(gè)主設(shè)備和16個(gè)從設(shè)備,內(nèi)置仲裁器,允許多個(gè)主從設(shè)備進(jìn)行通信

3、存儲(chǔ)器

1、可以使用寄存器來(lái)實(shí)現(xiàn)存儲(chǔ)器,也可以使用FPGA嵌入式存儲(chǔ)塊來(lái)實(shí)現(xiàn)

2、存儲(chǔ)器生成以后,要采用wishbone總線進(jìn)行封裝,使其符合wishbone總線標(biāo)準(zhǔn)

三、各功能模塊軟硬件設(shè)計(jì)

1、GPIO

1、模塊主要特征:

用戶可以從1到32之間選擇通用IO信號(hào)的個(gè)數(shù),更多信號(hào)可以采用多個(gè)GPIOP核并用。

包含三態(tài)使能端或開(kāi)漏使能端(需要三態(tài)或漏級(jí)開(kāi)路IO單元)。

設(shè)為輸入的通用O信號(hào)可對(duì)CPU產(chǎn)生中斷請(qǐng)求。

設(shè)為輸入的通用I/O信號(hào)能記錄在系統(tǒng)時(shí)鐘的上升沿或外部時(shí)鐘的用戶編程邊沿。

2、GPIO模塊主要由WISHBONE主機(jī)接口、GPIO寄存器、輔助輸入輸出端口、外部單元接口組成。GPIO核結(jié)構(gòu)如下所示:

3、GPIO模塊接口采用wishbone接口,在本設(shè)計(jì)中GPIO連接到wishbone總線的從接口14上,基地址定義為“GPIO_BASE ?0xE0000000”。

4、GPIO的寄存器定義如下:

按照如上的定義定義寄存器的地址:

5、在初始化GPIO時(shí),設(shè)置高8位為輸入,低8位為輸出,開(kāi)啟外部中斷,開(kāi)啟GPIO高8位輸入的中斷,并設(shè)置為上升沿觸發(fā)中斷。相應(yīng)的GPIO初始化程序?yàn)椋?/span>

6、將GPIO配置為雙向端口,OE為輸入輸出控制端。將GPIO端口定義為“inout”類型,相應(yīng)的模塊結(jié)構(gòu)如下:

對(duì)于每一位都可以單獨(dú)設(shè)置為輸入輸出,相應(yīng)的HDL描述為:

2、UART配置

1、UART為異步串行接口,數(shù)據(jù)在單條傳輸線上一位一位的傳輸,節(jié)省通信總線,碼率低,本設(shè)計(jì)采用opencore上開(kāi)源的UART?16550 IP模塊。

2、在UART16550模塊中,我們約定數(shù)據(jù)為8個(gè)數(shù)據(jù)位、1個(gè)停止位、無(wú)效驗(yàn)位,波特率設(shè)置位115200.

3、UART控制器表示如下:

UART接口控制器設(shè)計(jì)中只支持TXD和RXD兩個(gè)信號(hào)。

4、設(shè)置串行通信的波特率為115200,波特率設(shè)置方式為“(輸入時(shí)鐘速度)/(除數(shù)鎖存值)= 16 x 通信

波特率“。

5、在設(shè)計(jì)時(shí)我們通常只使用“void uart_putc(char c)”函數(shù)來(lái)發(fā)送數(shù)據(jù),使用“void uart_init(void)”函數(shù)來(lái)初始化。

3、定時(shí)器、看門狗和PWM(PTC)

1、PTC的主要功能為:

①32位計(jì)時(shí)、計(jì)數(shù)功能;

②次或連續(xù)計(jì)時(shí)、計(jì)數(shù);

③可編程PWM模式;

④系統(tǒng)時(shí)鐘核外部時(shí)鐘兩種選擇;HI/LO參考和捕獲寄存器;

⑤PWM輸出三態(tài)控制;

⑥PWM計(jì)時(shí)器/計(jì)數(shù)器計(jì)時(shí)中斷;

⑦WISHBONE?接口兼容。

?

2、PTC模塊的結(jié)構(gòu)如下:

PTC通過(guò)WISHBONE接口連接到系統(tǒng)并與系統(tǒng)通信,PTC有4個(gè)與外部連接的端口。ptc_ecgt為當(dāng)使用外部輸入時(shí)鐘時(shí)的時(shí)鐘輸入端;ptc_capt為使用捕獲輸入模式模式時(shí),當(dāng)輸入下降沿或上升沿時(shí),捕獲當(dāng)前的計(jì)數(shù)值;ptc_pwm為使用輸出比較模式時(shí),pwm波輸出接口。

3、PTC的寄存器定義為:

PTC共有4個(gè)寄存器,我們將PTC連接到WISHBONE從模塊的15端口,對(duì)于寄存器的定義為:

4、我們使用PTC模塊來(lái)產(chǎn)生pwm波形,在初始化時(shí),首先使能PTC模塊,然后使能pwm輸出功能,配置定時(shí)器為自動(dòng)循環(huán)計(jì)數(shù)方式,然后設(shè)置HRC和LRC的值,以配置pwm的頻率和占空比。

在產(chǎn)生pwm波時(shí),定時(shí)器計(jì)數(shù)到LRC的值時(shí),在從0開(kāi)始計(jì)數(shù);當(dāng)當(dāng)前計(jì)數(shù)值小于HRC時(shí)pwm輸出為低電平,當(dāng)當(dāng)前計(jì)數(shù)值大于HRC的值時(shí),pwm輸出高電平,所以LRC決定pwm的頻率,HRC決定pwm的占空比。

4、鎖相環(huán)設(shè)置(PLL)

 ?。?、鎖相環(huán)能調(diào)節(jié)輸入時(shí)鐘的頻率和相位,我們采用PLL模塊將FPGA上50MHz的信號(hào)時(shí)鐘變?yōu)椋玻担停龋?/p>

2、

四、軟件設(shè)計(jì)

1、中斷設(shè)置

  1、需要先使用“l(fā).mtspr”配置特殊功能寄存器開(kāi)處理器中斷;中斷服務(wù)函數(shù)使用“l(fā).rfe”返回。開(kāi)中斷操作為:

         l.mfspr r1,r0,0x0011

????????     l.ori r3,r1,0x6

????????     l.mtspr r0,r3,0x0011

2、外部中斷對(duì)應(yīng)的中斷向量地址為0X800,當(dāng)外部中斷響應(yīng)后,程序就會(huì)跳轉(zhuǎn)到0x800地址處執(zhí)行相應(yīng)的程序。

3、在0x800處,跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)函數(shù)處,在中斷服務(wù)函數(shù)中,要清楚中斷標(biāo)志位,即使“REG32(RGPIO_INTS )=0x00000000;”中斷服務(wù)函數(shù)執(zhí)行完畢后調(diào)用“l(fā).rfe”指令恢復(fù)現(xiàn)場(chǎng),接著執(zhí)行相應(yīng)的程序。

2、主程序設(shè)計(jì)

1、在主程序中,首先初始化串口、定時(shí)器和GPIO,配置定時(shí)器頻率為1kHz,占空比為50%。

2、相應(yīng)的C程序?yàn)椋?/p>

3、中斷服務(wù)函數(shù)設(shè)計(jì)

在中斷服務(wù)函數(shù)中,首先通過(guò)串口打印相應(yīng)的字符,然后在清楚中斷,調(diào)用“l(fā).rfe”指令進(jìn)行中斷返回。

五、結(jié)果驗(yàn)證

1、仿真驗(yàn)證

  通過(guò)Modelsim進(jìn)行仿真,對(duì)系統(tǒng)施加一定的激勵(lì),觀察輸出的時(shí)序。

  觀察的gpio輸出值和串口打印數(shù)據(jù)為:

觀察的pwm的輸出為

可以看到有相應(yīng)的pwm波生成。

2、FPGA系統(tǒng)驗(yàn)證

將所設(shè)計(jì)的系統(tǒng)下載到FPGA中進(jìn)行驗(yàn)證

設(shè)計(jì)步驟為分析綜合、映射、布局、布線、管腳分配,在FPGA上上的引腳分配為:


SoC系統(tǒng)設(shè)計(jì),基于OR1200開(kāi)源32位軟核處理器wishbone總線系統(tǒng),實(shí)現(xiàn)uart gpio 定時(shí)器的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
龙里县| 汤原县| 宽甸| 永新县| 无棣县| 西宁市| 阿克陶县| 新密市| 江川县| 甘洛县| 文山县| 长治市| 湖北省| 渭源县| 梨树县| 开平市| 榆中县| 辽阳市| 仲巴县| 永福县| 赤峰市| 广西| 侯马市| 舒城县| 临泉县| 栾城县| 谷城县| 安顺市| 定边县| 东港市| 綦江县| 电白县| 武威市| 武功县| 石阡县| 腾冲县| 永泰县| 沙雅县| 临洮县| 佛坪县| 江源县|