SOPC課程設計實驗報告_第1頁
SOPC課程設計實驗報告_第2頁
SOPC課程設計實驗報告_第3頁
SOPC課程設計實驗報告_第4頁
SOPC課程設計實驗報告_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、SOPC課程設計實驗報告 基于SOPC的警示燈設計 2013電子信息工程3班李婕 羅丹妮一、 設計目的 1、 熟悉掌握SOPC的基本流程2、 設計一個警示燈并滿足基本要求3、 通過設計發(fā)現(xiàn)問題并解決二、 設計設備1、硬件:PC機、SOPC-NIOS II EDA/SOPC系統(tǒng)開發(fā)平臺2、軟件:QUARTUS II、SOPC Builder、NIOS II IDE三、 設計內(nèi)容 初始狀態(tài)為紅燈(LED2)熄滅,綠燈(LED1)點亮,數(shù)碼管顯示為0。 當按鍵按下,紅燈(LED2)閃爍,綠燈(LED1)熄滅,同時蜂鳴器響起,數(shù)碼管開始倒計時9S,此狀態(tài)持續(xù)時間為9s。 9s后,恢復初始狀態(tài)。四、 設

2、計步驟1、 使用Quartus II建立一個工程文件和頂層文件;2、 使用SOPC Builder建立一個簡單Nios II硬件系統(tǒng)1) 啟動SOPC Builder2) 指定目標FPGA3) 添加NiosII內(nèi)核及其他外設A、添加NiosII、SRAM、JTAG-UART、Avalon總線的IP核 B、添加一個2位的輸入型PIO作為按鍵keyC、添加兩個1位的輸出型PIO作為 led1及l(fā)ed2的輸出端口D、添加一個1位的輸出型PIO作為蜂鳴器的輸入端口AE、添加一個3位的輸出型PIO作為數(shù)碼管的位選selF、添加一個8位的輸出型PIO作為數(shù)碼管的段選dat 4) 指定基地址和中斷優(yōu)先級 5

3、) 設置NiosII復位和異常地址6) 編譯生成NiosII系統(tǒng)SOPC Builder行程圖如下:3、在Quartus II中建立一個蜂鳴器 1) 用VHDL語言編寫蜂鳴器程序 2) 編譯成功后Creat symbol,生成Project sing4、在Quartus II中編譯Nios II硬件系統(tǒng)并生成配置文件 1) 在Quartus II加入Nios II系統(tǒng)符號到頂層文件 2) 給各端口加入輸入輸出引腳,并重命名 3) 設置參數(shù) 4) 編譯頂層文件 5) 分配管腳 6) 再次編譯5、在Nios II IDE中建立C/C+工程,編寫用戶程序6、編譯用戶程序7、下載.SOF至FPGA,運

4、行程序,觀察結果五、設計程序 蜂鳴器程序(VHDL):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sing1 IS PORT( CLK:IN STD_LOGIC; p:IN STD_LOGIC; - DIGIT:BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0); SPEAKER:OUT STD_LOGIC);END ENTITY;ARCHITECTURE SONG OF sing1 ISSIGNAL DRIVER,ORIGIN:STD_LOGIC_VECTO

5、R(12 DOWNTO 0);SIGNAL COUNTER:INTEGER RANGE 0 TO 140;SIGNAL COUNTER1:INTEGER RANGE 0 TO 3;SIGNAL COUNTER2:INTEGER RANGE 1 TO ;SIGNAL DIGIT :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL COUNT :STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL CARRIER,CLK_4MHZ,CLK_4HZ:STD_LOGIC; BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1

6、THEN IF COUNTER1=1 THEN CLK_4MHZ=1; COUNTER1=2; ELSIF COUNTER1=3 THEN CLK_4MHZ=0; COUNTER1=0; ELSE COUNTER1=COUNTER1+1; END IF; IF COUNTER2= THEN CLK_4HZ=1; COUNTER2=; ELSIF COUNTER2= THEN CLK_4HZ=0; COUNTER2=1; ELSE COUNTER2=COUNTER2+1; END IF;END IF;END PROCESS;PROCESS(CLK_4MHZ)BEGIN IF CLK_4MHZEV

7、ENT AND CLK_4MHZ=1 THEN IF DRIVER=11THEN CARRIER=1; DRIVER=ORIGIN;ELSEDRIVER=DRIVER+1;CARRIER=0;END IF;END IF;END PROCESS;PROCESS(CARRIER)BEGINif(p=1)thenIF CARRIEREVENT AND CARRIER=1 THENCOUNT=COUNT+1;IF COUNT=00THENSPEAKER=1;ELSESPEAKER=0;END IF;END IF;end if;END PROCESS;PROCESS(CLK_4HZ)BEGINIF CL

8、K_4HZEVENT AND CLK_4HZ=1 THEN IF COUNTER=140 THENCOUNTER=0;ELSE COUNTERDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGI

9、TDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGI

10、TDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITDIGITORIGINORIGINORIGINORIGINORIGINORIGINORIGINORIGINORIGINORIGINORIGIN=11;END CASE;END PROCESS;END SONG; 警示燈總程序:#include #includ

11、e #include #include #include system.h #include altera_avalon_pio_regs.h #include alt_types.h #include sys/alt_irq.h int num;static void Button_ISR_Init(void);static void Button_Irq_Handler(void* context,alt_u32 id);alt_u8 segtab10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /09段碼static void d

12、isplay(int num);/按鍵初始化static void Button_ISR_Init(void) IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_BASE,0xff); /允許8個按鍵中斷 IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0); /清除中斷標志寄存器 alt_irq_register(KEY_IRQ,NULL,Button_Irq_Handler); /注冊中斷 static void display(int num) IOWR_ALTERA_AVALON_PIO_DATA(SEL_BASE,0); /數(shù)碼

13、管位選 IOWR_ALTERA_AVALON_PIO_DATA(DAT_BASE,segtabnum); /顯示倒計時 usleep(1000); /*- *按鍵中斷處理函數(shù)*-*/ static void Button_Irq_Handler(void* context,alt_u32 id) int i; for(i=0;i9;i+) num=9-i; display(num); IOWR_ALTERA_AVALON_PIO_DATA(A_BASE, 1);/蜂鳴器響起 IOWR_ALTERA_AVALON_PIO_DATA(LED1_BASE, 0); IOWR_ALTERA_AVALO

14、N_PIO_DATA(LED2_BASE, 1); usleep(); IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE, 0); usleep(); IOWR_ALTERA_AVALON_PIO_DATA(A_BASE, 0);/蜂鳴器關閉 IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0); num=0; display(num); int main(void) printf(Begin!n); Button_ISR_Init(); /按鍵中斷初始化 while(1) usleep(); IOWR_ALTERA_AVALON_PIO_DATA(LED1_BASE, 1); IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE, 0); num=0; display(num); return 0; 六、設計結果按鍵未按下時,處于初始狀態(tài):LED1亮,LED2滅,數(shù)碼管顯示為0,蜂鳴器未啟動;按鍵按下之后,LED1滅,LED2閃爍,數(shù)碼管進入9秒倒計時并且蜂鳴器響;9秒后恢復初始狀態(tài)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論