版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《片上系統(tǒng)》課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:基于SOPC控制流水燈
目錄一、控制要求: 3二、設(shè)計(jì)思路: 3三、設(shè)計(jì)目的: 3四、實(shí)驗(yàn)步驟: 41、打開實(shí)驗(yàn)完整硬件后,使用SOPC軟件進(jìn)行硬件剪裁: 42、剪裁后對(duì)CPU存儲(chǔ)重新配置: 53、重新編輯symbol以及管腳分配: 64、完全編譯后,通過JTAG端口,燒錄到試驗(yàn)箱中: 85、NIOSII8.0IDE中進(jìn)行軟件編譯: 86、編譯完成后,選擇RUNASniosⅡhardware: 9五、實(shí)驗(yàn)結(jié)果(實(shí)驗(yàn)箱截圖): 10六、心得體會(huì)。 10七、程序: 111、主程序:seven_seg.c 112、CH452_I2C.h 133、define.h 164、key.c 175、key.h 19一、控制要求:通過Quartus=2\*ROMANII中SOPC工具,構(gòu)建開發(fā)板硬件,以及NIOSII8.0IDE編譯軟件程序,在實(shí)驗(yàn)箱(GX-SOC/SOPC-CIDE綜合創(chuàng)新開發(fā)試驗(yàn)平臺(tái))控制7段數(shù)碼管,實(shí)現(xiàn)以下功能:按鍵1:控制7段數(shù)碼管從0~999按照一秒加1操作;按鍵2:控制7段數(shù)碼管從0~999按照一秒減1操作;按鍵3:控制7段數(shù)碼管加1或者減1操作停止。二、設(shè)計(jì)思路:添加實(shí)驗(yàn)范例cide_c2中的完整硬件,對(duì)本次實(shí)驗(yàn)需要使用到的硬件進(jìn)行剪裁,僅留下必須的最小硬件系統(tǒng)。軟件方面,使用到i2c總線讀取、ch452芯片的7段數(shù)碼管。程序需要完成按鍵的判斷,實(shí)現(xiàn)該按鍵對(duì)應(yīng)的操作??刂瞥绦蚴褂肅語(yǔ)言編程。三、設(shè)計(jì)目的:學(xué)習(xí)應(yīng)用i2c總線的讀寫方式;運(yùn)用ch452芯片的數(shù)碼管顯示功能。四、實(shí)驗(yàn)步驟:1、打開實(shí)驗(yàn)完整硬件后,使用SOPC軟件進(jìn)行硬件剪裁:(剪裁前)(剪裁后)2、剪裁后對(duì)CPU存儲(chǔ)重新配置:3、重新編輯symbol以及管腳分配:管腳分配,可以使用文本方式修改,在記錄管腳分配的QSF文件中,保留以下文本即可:set_location_assignmentPIN_L1-toclk_sysset_location_assignmentPIN_L2-toresetset_location_assignmentPIN_R5-tosdram_addr[0]set_location_assignmentPIN_U2-tosdram_addr[1]set_location_assignmentPIN_U1-tosdram_addr[2]set_location_assignmentPIN_T2-tosdram_addr[3]set_location_assignmentPIN_T1-tosdram_addr[4]set_location_assignmentPIN_R2-tosdram_addr[5]set_location_assignmentPIN_R1-tosdram_addr[6]set_location_assignmentPIN_P6-tosdram_addr[7]set_location_assignmentPIN_P5-tosdram_addr[8]set_location_assignmentPIN_P3-tosdram_addr[9]set_location_assignmentPIN_R6-tosdram_addr[10]set_location_assignmentPIN_N4-tosdram_addr[11]set_location_assignmentPIN_V2-tosdram_ba[0]set_location_assignmentPIN_V1-tosdram_ba[1]set_location_assignmentPIN_U3-tosdram_nCASset_location_assignmentPIN_N6-tosdram_CKEset_location_assignmentPIN_T6-tosdram_nCSset_location_assignmentPIN_V4-tosdram_data[0]set_location_assignmentPIN_W5-tosdram_data[1]set_location_assignmentPIN_Y4-tosdram_data[2]set_location_assignmentPIN_Y3-tosdram_data[3]set_location_assignmentPIN_W4-tosdram_data[4]set_location_assignmentPIN_W3-tosdram_data[5]set_location_assignmentPIN_Y2-tosdram_data[6]set_location_assignmentPIN_Y1-tosdram_data[7]set_location_assignmentPIN_P1-tosdram_data[8]set_location_assignmentPIN_N2-tosdram_data[9]set_location_assignmentPIN_N1-tosdram_data[10]set_location_assignmentPIN_M6-tosdram_data[11]set_location_assignmentPIN_M5-tosdram_data[12]set_location_assignmentPIN_J2-tosdram_data[13]set_location_assignmentPIN_J1-tosdram_data[14]set_location_assignmentPIN_J4-tosdram_data[15]set_location_assignmentPIN_W2-tosdram_DQM[0]set_location_assignmentPIN_P2-tosdram_DQM[1]set_location_assignmentPIN_T3-tosdram_nRASset_location_assignmentPIN_W1-tosdram_nWEset_location_assignmentPIN_C14-tosram_nCS1set_location_assignmentPIN_U4-tosdram_clkset_location_assignmentPIN_Y20-tobutton_pio[7]set_location_assignmentPIN_Y21-tobutton_pio[6]set_location_assignmentPIN_Y22-tobutton_pio[5]set_location_assignmentPIN_W22-tobutton_pio[4]set_location_assignmentPIN_N21-tobutton_pio[3]set_location_assignmentPIN_R18-tobutton_pio[2]set_location_assignmentPIN_AB17-tobutton_pio[1]set_location_assignmentPIN_U18-tobutton_pio[0]set_location_assignmentPIN_AA14-tokey_INT_nset_location_assignmentPIN_Y18-tosclset_location_assignmentPIN_AA19-tosdaset_location_assignmentPIN_AB13-toseg_key_sclset_location_assignmentPIN_AA12-toseg_key_sda4、完全編譯后,通過JTAG端口,燒錄到試驗(yàn)箱中:5、NIOSII8.0IDE中進(jìn)行軟件編譯:建立工程,把所有使用到的程序添加到工程文件下,進(jìn)行編譯6、編譯完成后,選擇RUNASniosⅡhardware:五、實(shí)驗(yàn)結(jié)果(實(shí)驗(yàn)箱截圖):六、心得體會(huì)。這門課程在開始的時(shí)候毫無頭緒,不知從何下手,然后經(jīng)過慢慢學(xué)習(xí)了解,才開始對(duì)SOPC稍微有了整體概念、思路。通過這學(xué)期的學(xué)期,有了很到收獲:首先,通過學(xué)習(xí),使自己對(duì)課本上的知識(shí)可以應(yīng)用于實(shí)際,使得理論與實(shí)際相結(jié)合,加深自己對(duì)課本上的知識(shí)更好的理解,同事事實(shí)也鍛煉了個(gè)人動(dòng)手能力,對(duì)quartusⅡniosⅡ等仿真軟件操作達(dá)到學(xué)以致用。在設(shè)計(jì)中遇到了很多問題,在張老師的辛勤指導(dǎo)下,得以解決。最后對(duì)自己有過幫助的同學(xué)和老師表示感謝!七、程序:1、主程序:seven_seg.c#include"system.h"#include"alt_types.h"#include"altera_avalon_pio_regs.h"#include"define.h"#include"CH452_I2C.h"#include"key.h"#include"priv/alt_busy_sleep.h"#include"sys/alt_irq.h"#include"key.h"#defineADDKEY1//#defineDECREASEKEY2//#defineSTOPKEY3//intmain(void){alt_u8KeyVlaue;inti;KeyPIOInit();KeyIntEnable();CH452_Write(CH452_SYSON2);//兩線制方式,如果SDA用做按鍵中斷輸出,那么命令應(yīng)該為(0x04,0x23)CH452_Write(CH452_BCD);//BCD譯碼,8個(gè)數(shù)碼管while(1){KeyVlaue=GetKeyValue();switch(KeyVlaue){caseADD:{while(1){KeyVlaue=GetKeyValue();if(KeyVlaue==DECREASE)break;elseif(KeyVlaue==STOP)break;else{if(i>999)i=0;elsei+=1;}alt_busy_sleep(100000);CH452_Write(CH452_DIG2|i/100);CH452_Write(CH452_DIG1|i/10%10);CH452_Write(CH452_DIG0|i%10);}break;}caseDECREASE:{while(1){KeyVlaue=GetKeyValue();if(KeyVlaue==ADD)break;elseif(KeyVlaue==STOP)break;else{if(i<=0)i=999;elsei-=1;}alt_busy_sleep(100000);CH452_Write(CH452_DIG2|i/100);CH452_Write(CH452_DIG1|i/10%10);CH452_Write(CH452_DIG0|i%10);}break;}caseSTOP:{while(1){KeyVlaue=GetKeyValue();if(KeyVlaue==ADD)break;elseif(KeyVlaue==DECREASE)break;elsei=i;alt_busy_sleep(100000);CH452_Write(CH452_DIG2|i/100);CH452_Write(CH452_DIG1|i/10%10);CH452_Write(CH452_DIG0|i%10);}break;}}}}2、CH452_I2C.h#include"system.h"#include"altera_avalon_pio_regs.h"#include"alt_types.h"#include"priv/alt_busy_sleep.h"#include<stdio.h>#include"sys/alt_irq.h"#include"define.h"voidCH452_I2c_Start_2(void)//操作起始,兩線制方式,SDA用做中斷輸出,使用以下兩個(gè)函數(shù){IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE,1);IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SCL_BASE,1);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE,1);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,1);usleep(5);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE,0);usleep(5);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);//usleep(3);}voidCH452_I2c_Stop_2(void)//操作結(jié)束{IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE,1);IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SCL_BASE,1);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE,0);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,1);usleep(5);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE,1);usleep(5);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);}voidack()//確認(rèn){IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE,0);IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SCL_BASE,1);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE,0);usleep(5);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,1);usleep(5);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);}voidCH452_I2c_WrByte(unsignedchardat)//寫一個(gè)字節(jié)數(shù)據(jù){unsignedchartemp_number;unsignedchari;intdelay;IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE,1);IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SCL_BASE,1);for(i=0;i<8;i++){temp_number=dat>>7;IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);usleep(5);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE,temp_number);for(delay=0;delay<5;delay++);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,1);dat=dat<<1;}IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);}unsignedcharCH452_I2c_RdByte(void)//讀一個(gè)字節(jié)數(shù)據(jù){unsignedchari=8;unsignedcharDATA_received=0;intdelay;IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE,0);IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SCL_BASE,1);while(i--){DATA_received<<=1;IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);usleep(5);for(delay=0;delay<5;delay++);IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,1);DATA_received|=IORD_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE);}IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);returnDATA_received;}voidCH452_Write(unsignedshortcmd)//寫命令{CH452_I2c_Start_2();/*啟動(dòng)總線*/#ifdefENABLE_2_CH452//若有兩個(gè)CH452并連CH452_I2c_WrByte((unsignedchar)(cmd>>7)&CH452_I2C_MASK|CH452_I2C_ADDR0);//CH452的ADDR=0時(shí)#elseCH452_I2c_WrByte((unsignedchar)(cmd>>7)&CH452_I2C_MASK|CH452_I2C_ADDR1);//CH452的ADDR=1時(shí)(默認(rèn))#endifack();CH452_I2c_WrByte((unsignedchar)cmd);/*發(fā)送數(shù)據(jù)*/ack();CH452_I2c_Stop_2();/*結(jié)束總線*/}unsignedcharCH452_Read(void)//讀取按鍵{unsignedcharkeycode;CH452_I2c_Start_2();/*啟動(dòng)總線*/CH452_I2c_WrByte((unsignedchar)(CH452_GET_KEY>>7)&CH452_I2C_MASK|0x01|CH452_I2C_ADDR1);//若有兩個(gè)CH452并連,當(dāng)ADDR=0時(shí),需修改為CH452_I2C_ADDR0ack();keycode=CH452_I2c_RdByte();/*讀取數(shù)據(jù)*/ack();CH452_I2c_Stop_2();/*結(jié)束總線*/return(keycode);}3、define.h#ifndef_DEFINE_H_#define_DEFINE_H_#endif//_DEFINE_H_#defineCH452_NOP0x0000//空操作#defineCH452_RESET0x0201//復(fù)位#defineCH452_LEVEL0x0100//加載光柱值#defineCH452_CLR_BIT0x0180//段位清0#defineCH452_SET_BIT0x01C0//段位置1#defineCH452_SLEEP0x0202//進(jìn)入睡眠狀態(tài)#defineCH452_LEFTMOV0x0300//設(shè)置移動(dòng)方式-作移#defineCH452_LEFTCYC0x0301//設(shè)置移動(dòng)方式-左循#defineCH452_RIGHTMOV0x0302//設(shè)置移動(dòng)方式-右移#defineCH452_RIGHTCYC0x0303//設(shè)置移動(dòng)方式-右循#defineCH452_SELF_BCD0x0380//自定義BCD碼#defineCH452_SYSOFF0x0400//關(guān)顯示、鍵盤#defineCH452_SYSON10x0401//開顯示#defineCH452_SYSON20x0403//開顯示、鍵盤#defineCH452_SYSON2W0x0423//開顯示、鍵盤,真正2線接口#defineCH452_DSP0x0500//設(shè)置默認(rèn)顯示方式#defineCH452_BCD0x0580//設(shè)置BCD譯碼方式#defineCH452_TWINKLE0x0600//設(shè)置閃爍控制#defineCH452_GET_KEY0x0700//獲取按鍵#defineCH452_DIG00x0800//數(shù)碼管位0顯示,需另加8位數(shù)據(jù)#defineCH452_DIG10x0900//數(shù)碼管位1顯示,需另加8位數(shù)據(jù)#defineCH452_DIG20x0a00//數(shù)碼管位2顯示,需另加8位數(shù)據(jù)#defineCH452_DIG30x0b00//數(shù)碼管位3顯示,需另加8位數(shù)據(jù)#defineCH452_DIG40x0c00//數(shù)碼管位4顯示,需另加8位數(shù)據(jù)#defineCH452_DIG50x0d00//數(shù)碼管位5顯示,需另加8位數(shù)據(jù)#defineCH452_DIG60x0e00//數(shù)碼管位6顯示,需另加8位數(shù)據(jù)#defineCH452_DIG70x0f00//數(shù)碼管位7顯示,需另加8位數(shù)據(jù)#defineCH452_SCL_SET{IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,1);}#defineCH452_SCL_CLR{IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);}#defineCH452_SDA_SET{IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE,1);}#defineCH452_SDA_CLR{IOWR_ALTERA_AVALON_PIO_DATA(SEG_KEY_SCL_BASE,0);}#defineCH452_SDA_IN(IORD_ALTERA_AVALON_PIO_DATA(SEG_KEY_SDA_BASE);)#defineCH452_SDA_D_OUT{IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE,1);}//設(shè)置SDA為輸出方向,對(duì)于雙向I/O需切換為輸出#defineCH452_SDA_D_IN{IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SDA_BASE,0);}//設(shè)置SDA為輸入方向,對(duì)于雙向I/O需切換為輸入#defineCH452_SCL_D_OUT{IOWR_ALTERA_AVALON_PIO_DIRECTION(SEG_KEY_SCL_BASE,1);}//設(shè)置SCL為輸出方向,對(duì)于雙向I/O需切換為輸出#defineCH452_I2C_ADDR10x60//CH452的ADDR=1時(shí)的地址,默認(rèn)值#defineCH452_I2C_MASK0x3E//CH452的2線接口高字節(jié)命令掩碼alt_u8flag;//隊(duì)列放滿標(biāo)志alt_u32key_value;//存儲(chǔ)鍵盤值4、key.c#include"system.h"#include<stdio.h>#include"altera_avalon_pio_regs.h"#include"alt_types.h"#include"sys/alt_irq.h"#include"key.h"#defineBUF_SIZE10alt_u32done=0;//信號(hào)量:通知外部中斷事件發(fā)生staticalt_u8key_value;staticvoidKeyDownISR(void*context,alt_u32id);staticvoidKeyDownISR(void*context,alt_u32id){/*clearcaptureregister*/IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0);/*Getthekeyvalue*/key_value=IORD_ALTERA_AVALON_PIO_DATA(BUTTON_PIO_BASE);done++;} alt_u32KeyPIOInit(void){ //initializetheKEY_PIOdirectionasinput IOWR_ALTERA_AVALON_PIO_DIRECTION(BUTTON_PIO_BASE,0x00);//thedirectionisinput IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE,0xff);//enableinterrupts IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0x00);//clearcaptureregister //registerkeydownISR returnalt_irq_register(BUTTON_PIO_IRQ,NULL,KeyDownISR);}voidKeyIntEnable(void){ IOWR_ALTERA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球商店可視化工具行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)單立柱托盤堆垛機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 嚴(yán)守黨的生活紀(jì)律維護(hù)黨員良好形象黨員教育培訓(xùn)課件
- 作用方法局麻作用吸收作用表面麻醉浸潤(rùn)麻醉麻醉蛛網(wǎng)膜下腔麻醉硬膜外麻醉講解
- 醫(yī)學(xué)儀器外貿(mào)購(gòu)銷合同范本年
- 土地房屋轉(zhuǎn)讓簡(jiǎn)單合同范本
- 服裝設(shè)計(jì)與生產(chǎn)加工合同
- 項(xiàng)目承包服務(wù)合同范本
- 財(cái)務(wù)管理系統(tǒng)開發(fā)合作合同
- 店面房出租經(jīng)營(yíng)合同書
- 四川省綿陽(yáng)市2025屆高三上學(xué)期第二次診斷性考試語(yǔ)文試題(含答案)
- 2024年遼寧鐵道職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 《項(xiàng)脊軒志》公開課課件【一等獎(jiǎng)】
- 美發(fā)學(xué)徒助理職業(yè)規(guī)劃書
- 法醫(yī)病理學(xué)課件
- 職代會(huì)提案征集表
- 介紹uppc技術(shù)特點(diǎn)
- 《諫逐客書》理解性默寫(帶答案)最詳細(xì)
- 《黑駿馬》讀書筆記思維導(dǎo)圖
- 2023年物理會(huì)考真題貴州省普通高中學(xué)業(yè)水平考試試卷
- 盤扣式懸挑腳手架專項(xiàng)施工方案
評(píng)論
0/150
提交評(píng)論