




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于SOPC的數(shù)字鐘設計學 院:計控學院 班 級:計本121學 號:2012021001 姓 名:鐘濟強指導老師:張浩鵬一、 設計概述用Nios II DE2開發(fā)板的LCD顯示電子鐘的日期和時間,LCD分兩行顯示,第一行顯示年月日,第二行顯示時分秒。用輸入按鈕BUTTON來控制LCD行修改,通過Nios II IDE進行軟件設計。二、 設計要求 1掌握Nios II系統(tǒng)的設計和使用方法; 2學習通過Nios II IDE進行軟件設計的方法; 3實現(xiàn)在液晶屏上顯示時間和日期,并可以對其進行設置。三、 實驗環(huán)境DE2 開發(fā)板QuartusII 7.2SOPC Builder 7.2NiosII I
2、DE 7.2四、 設計方案(總體設計、軟件設計、硬件設計)1. 總體設計要實現(xiàn)以下兩個功能:(1). 在液晶屏上顯示時間,日期(2). 對時間、日期能夠進行設置建立新工程clock2. 硬件系統(tǒng)組成設計根據(jù)系統(tǒng)要實現(xiàn)的功能和開發(fā)板配置,需要用到的DE2開發(fā)板上的外圍器件有:LCD:電子鐘顯示屏幕按鈕:電子鐘設置功能鍵CFI Flash存儲器:存儲軟、硬件程序SDRAM存儲器:程序運行時將其導入SDRAM根據(jù)所用到的外設和器件特性,在SOPC Builder中建立系統(tǒng)要添加的模塊包括:NiosII CPU定時器,按鍵PIO,LCD, 外部存儲器總線(Avalon三態(tài)橋),外部SDRAM控制器,外
3、部Flash接口。打開SOPC Buider,系統(tǒng)名稱為sopc_clock加入SDRAM組件加入Flash Memory 組件加入外部存儲器總線(Avalon三態(tài)橋)加入按鍵PIO加入LCD加入NiosII CPU定時器,選擇標準型的元件添加完后,要為每個外設分配及地址和中斷請求優(yōu)先級(IRQ),在System中選擇Auto-Assign Base Address和Auto-Assign IRQs命令,這兩個命令可分別簡單分配外設基地址和中斷優(yōu)先級。然后生成Nios II系統(tǒng)。然后生成頂層文件,將Nios II系統(tǒng)模塊加入到頂層文件中,如圖所示原理圖進行引腳鎖定,并編譯,然后進行硬件下載3軟
4、件系統(tǒng)設計要實現(xiàn)系統(tǒng)所需的功能,大量的工作應該集中在軟件設計和優(yōu)化上。電子鐘的軟件功能主要分為顯示、設置和時間算法三大部分。顯示部分的功能包括:顯示時間(小時:分鐘:秒)和 顯示日期(年-月-日)設置部分的功能包括:設置小時,設置分鐘,設置年份,設置月份,設置日期和退出設置。 設置部分的程序主要用在對按鍵的響應。在編寫程序前要對DE2開發(fā)板上的四個按鍵BUTTON功能進行如下分配:(1). 主菜單 BUTTON0:設置選擇鍵,可依次選擇設置時、分、秒和年、月、日BUTTON1:顯示日期鍵BUTTON2:顯示時間鍵(2). 子菜單(即進入對某個選項設置后的按鍵功能):BUTTON1:選項數(shù)字增加
5、BUTTON2:選項數(shù)字減少BUTTON3:退出對選項的設置,返回主菜單時間算法部分的功能包括:時間累加和確定每個月的最大天數(shù),使年、月、日能正確累加五、 軟件代碼1count_binary.c的代碼:#include "count_binary.h"/程序每秒鐘檢測一次按鈕的狀態(tài),對日期和時間進行設置#include "alt_types.h"#include <stdio.h>#include <string.h>#include <unistd.h>#include "system.h"#in
6、clude "sys/alt_irq.h"#include "altera_avalon_pio_regs.h"#include "lcd.h"volatile int edge_capture;void LCD_Init()/LCD初始化 lcd_write_cmd(LCD_BASE,0x38); usleep(2000); lcd_write_cmd(LCD_BASE,0x0C); usleep(2000); lcd_write_cmd(LCD_BASE,0x01); usleep(2000); lcd_write_cmd(LCD
7、_BASE,0x06); usleep(2000); lcd_write_cmd(LCD_BASE,0x80); usleep(2000);void LCD_Show_Text(char* Text)/LCD輸出格式 int i; for(i=0;i<strlen(Text);i+) lcd_write_data(LCD_BASE,Texti); usleep(2000); void LCD_Line1()/向LCD寫命令 lcd_write_cmd(LCD_BASE,0x80); usleep(2000);void LCD_Line2()/向LCD寫命令 lcd_write_cmd(L
8、CD_BASE,0xC0); usleep(2000);static void handle_button_interrupts(void* context,alt_u32 id) volatile int* edge_capture_ptr=(volatile int*) context; /*存儲按鈕的值到邊沿捕獲寄存器*/ *edge_capture_ptr=IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE); /*復位邊沿捕獲寄存器*/ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0);/
9、*初始化button_pio*/static void init_button_pio() void* edge_capture_ptr=(void*)&edge_capture; /*開放全部4個按鈕的中斷*/ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE,0xf); /*復位邊沿捕獲寄存器*/ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0x0); /*登記中斷源*/ alt_irq_register(BUTTON_PIO_IRQ,edge_capture_ptr,handle_b
10、utton_interrupts);void delay(unsigned int x) while(x-);int check_month(int month) /如果是1、3、5、7、8、10、12月,則每月31天,程序返回1 if(month=1)|(month=3)|(month=5)|(month=7)|(month=8)|(month=10)|(month=12) return 1; /如果是4、6、9、11月,則每月是30天,程序返回0 if(month=4)|(month=6)|(month=9)|(month=11) return 0; /如果是2月,程序返回2,具體多少天還
11、要根據(jù)年的判斷來決定 if(month=2) return 2;/*閏年的計算方法:公元紀年的年數(shù)可以被四整數(shù),即為閏年被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年如2000年時閏年,而1900年不是 */int check_year(int year) if(year%400)=0)|(year%4)=0)&&(year%100)!=0) return 1; /是閏年,返回1 else return 0; /不是閏年,返回0int main(void) int screen=0;/共有兩行,一行顯示年月日,一行顯示時間 int pos=0;/每行
12、都有三個位置,第一行是年月日,第二行是時分秒 int year,month,day,hour,minute,second; unsigned long sum;/sum要設置為長整型變量,不然會溢出 char date16; char time16; int year1=6; int year2=0; int year3=0; int year4=2; int month1=1; int month2=0; int day1=1; int day2=0; int hour4,hour3,hour2,hour1,minute2,minute1,second2,second1; unsigned
13、int screenflag; hour=0;minute=0;second=0;year=2006;month=1;day=1; /年月日時分秒初始化init_button_pio();LCD_Init();while(1) if(pos>=3) pos=0;/共有三個位置0、1、2,超過了2要馬上清0 if(screen>=2) screen=0;/共有兩行0、1,超過了1要馬上清0 /na_LED8->np_piodata=1<<pos;/用一個LED指示當前調(diào)整的位置 if(screen=0) screenflag=8; else screenflag=0
14、; /IOWR_ALTERA_AVALON_PIO_DATA(LED_GREEN_BASE,(1<<pos)|screenflag); usleep(1000000);/等待1秒的定時時間 if(second<59) second+; else second=0; if(minute<59) minute+; else minute=0; if(hour<23) hour+; else hour=0; if(day<30) day+; else day=1; if(month<12) month+; else month=1; if(year<9
15、999) year+; else year=2005; switch(edge_capture)/檢測按鈕 case 0x08:pos=pos+1;break;/改變調(diào)整位置/* 對數(shù)據(jù)進行加減操作的CASE:case 0x02和case 0x04 根據(jù)當前調(diào)整位置,判斷當前屏顯示的是年、月、日還是時分、秒 然后決定是對年月日進行加減還是對分時秒進行加減*/case 0x02:/對當前位置上的數(shù)據(jù)執(zhí)行減操作 if(pos=0) if(screen=0) if(day>1)day-; else if(check_month(month)=0)day=30; if(check_month(m
16、onth)=1)day=31; if(check_month(month)=2) if(check_year(year)day=29; else day=28; if(screen=1) if(second>0)second-; else second=59; if(pos=1) if(screen=0) if(month>1)month-; else month=12; if(screen=1) if(minute>0)minute-; else minute=59; if(pos=2) if(screen=0) if(year>0)year-; else year=
17、2005; if(screen=1) if(hour>0)hour-; else hour=23; break;case 0x04:/對當前位置上的數(shù)據(jù)執(zhí)行加操作 if(pos=0) if(screen=0) if(check_month(month)=0)if(day<30)day+;else day=1; if(check_month(month)=1)if(day<31)day+;else day=1; if(check_month(month)=2) if(check_year(year)if(day<29)day+;else day=1; else if(da
18、y<28)day+;else day=1; if(screen=1) if(second<59)second+; else second=0; if(pos=1) if(screen=0) if(month<12)month+; else month=1; if(screen=1) if(minute<59)minute+; else minute=0; if(pos=2) if(screen=0) if(year<9999)year+; else year=2005; if(screen=1) if(hour<23)hour+; else hour=0;
19、break;case 0x01:screen+;break;/換屏edge_capture=0; year4=year/1000;year3=(year-year4*1000)/100; year2=(year-year4*1000-year3*100)/10;year1=year%10; month2=month/10;month1=month%10; day2=day/10;day1=day%10; LCD_Line1(); date0=year4+0x30;date1=year3+0x30; date2=year2+0x30;date3=year1+0x30; date4=' &
20、#39;date5=' ' date6=month2+0x30;date7=month1+0x30; date8=' 'date9=' ' date10=day2+0x30;date11=day1+0x30; date12=' 'date13=' ' date14=' 'date15=' ' LCD_Show_Text(date); hour4=0;hour3=0; hour2=hour/10;hour1=hour%10; minute2=minute/10;minute1=minu
21、te%10; second2=second/10;second1=second%10; time0=' 'time1=' ' time2=hour2+0x30;time3=hour1+0x30; time4=' 'time5=' ' time6=minute2+0x30;time7=minute1+0x30; time8=' 'time9=' ' time10=second2+0x30;time11=second1+0x30; time12=' 'time13=' '
22、 time14=' 'time15=' ' LCD_Line2(); LCD_Show_Text(time);2lcd.h的代碼:#ifndef _LCD_H_#define _LCD_H_/LCD Module 16*2#define lcd_write_cmd(base,data) IOWR(base,0,data)#define lcd_read_cmd(base) IORD(base,1)#define lcd_write_data(base,data) IOWR(base,2,data)#define lcd_read_data(base) IORD(
23、base,3)/-void LCD_Init();void LCD_Show_Text(char* Text);void LCD_Line2();void LCD_Test();/-#endif六、 實驗分析和實驗結(jié)果用輸入按鈕BUTTON0可以控制LCD行修改,同時讓NiosII DE2開發(fā)板上的綠色發(fā)光二極管LEDG3的亮滅來表示。用輸入按鈕BUTTON3可以控制日期和時間的修改,BUTTON1和BUTTON2輸入按鈕可以減少和增加顯示的數(shù)字。實驗中開始時SDRAM的BIDIR端口的命名錯誤導致引腳鎖定未成功,此端口的名稱應為DRAM_DQ15.0。此外,三態(tài)橋的設置被改變了,需要重新設置
24、,回到Quartus II中,在assignments中選擇settings,Device->Device and Pin Options->Unused Pins,改為As input tri-stated。七、 總結(jié)通過這12周的SOPC技術(shù)綜合設計實踐的學習,我學會了Quartus II,SOPC Buider和Nios II DE2 的使用,并通過這些軟件可以進行簡單的實驗操作,強化了我的動手能力,并通過這幾次實驗更加了解SOPC的設計與應用。在實驗中,遇到了各種各樣的問題,首先是自己進行檢查,查不出來再由老師同學進行檢查和講解,提高了自己解決問題的能力,并且熟悉了整個實驗
25、的流程及具體的操作。我覺得這門課程很有意思,實驗中是把各個部分的操作整合在一起,形成一個系統(tǒng),做實驗時要有整體感,一旦出現(xiàn)問題整體的重新進行設置和編譯,比如如果添加組建時出現(xiàn)錯誤,要重新添加,重新生成模塊,重新倒入模塊,重新編譯頂層文件,是一個整體的過程。八、 附錄參考SOPC技術(shù)與應用,編著:江國強,機械工業(yè)出版社。參考SOPC技術(shù)綜合設計實踐實驗指南,編著:邱德惠。思考題:1 何謂SOC?SOC(System On a Chip)稱為片上系統(tǒng),它是指將一個完整產(chǎn)品的功能集成在一個芯片上或芯片組上。SOC中可以包括微處理器CPU、數(shù)字信號處理器DSP、存儲器(ROM、RAM、Flash等)、
26、總線和總線控制器、外圍設備接口等,還可以包括數(shù)?;旌想娐罚ǚ糯笃?、比較器、A/D和D/A轉(zhuǎn)換器、鎖相環(huán)等),甚至傳感器、微機電和微光電單元。2 何謂SOPC?SOPC(System On a Programmable Chip)稱為可編程片上系統(tǒng),它是基于可編程邏輯器件(FPGA或CPLD)可重構(gòu)的SOC。SOPC集成了硬核或軟核CPU、DSP、鎖相環(huán)(PLL)、存儲器、I/O接口及可編程邏輯,可以靈活高效地解決SOC方案,而且設計周期短,設計成本低,一般只需要一臺配有SOPC開發(fā)軟件的PC和一臺SOPC實驗開發(fā)系統(tǒng)(或開發(fā)板),就可以進行SOPC的設計與開發(fā)。3 何謂IP核?IP(Intel
27、lectual Property)是知識產(chǎn)權(quán)的簡稱。集成電路IP是指經(jīng)過預先設計、預先驗證、符合產(chǎn)業(yè)界普遍認同的設計規(guī)范和設計標準,并具有相對獨立并可以重復利用的電路模塊或子系統(tǒng),如CPU、運算器、存儲器、放大器等。集成電路IP模塊具有知識含量高、占用芯片面積小、運行速度快、功耗低、工藝容差性大等特點,可重復用于SOC、SOPC或復雜ASIC設計中。4 何謂嵌入式系統(tǒng),嵌入式系統(tǒng)的CPU核可以分為哪兩種類型?嵌入式系統(tǒng)是指嵌入到對象體系中的專用計算機系統(tǒng),包括硬件和軟件兩大部分。硬件包括處理器、存儲器、輸入輸出接口和外部設備等,軟件包括系統(tǒng)軟件和應用軟件。基于SOPC的嵌入式系統(tǒng)結(jié)構(gòu)主要包括嵌
28、入式微處理器(CPU核)、定時器(Timer)、嵌入式鎖相環(huán)(PLL)、嵌入式數(shù)字信號處理器(DSP)及其他IP模塊等部分。嵌入式系統(tǒng)的CPU核可以分為硬核和軟核。5 簡述CPU軟核的特點。軟核通常以可綜合的HDL提供,因此具有較高的靈活性,并與具體的實現(xiàn)工藝無關(guān),其主要缺點是缺乏對時序、面積和功耗的預見性。由于軟核是以源代碼的形式提供,盡管源代碼可以采用加密方法,但其知識產(chǎn)權(quán)保護問題不容忽視。6 簡述HAL的用途及基于HAL的外圍設備的編程方法。HAL作為支持Nios II處理器系統(tǒng)的軟件包,為用戶的嵌入式系統(tǒng)上的外圍設備提供了與之相匹配的接口程序。用戶不用自己建立或復制HAL文件,也不需要
29、編輯HAL中的任何源代碼,使用時只需要在C/C+源程序中指明代表這些接口程序的庫函數(shù)包含的頭文件即可。在一個基于Nios II的SOPC系統(tǒng)上,外圍設備包括通用異步串口UART、發(fā)光二極管LED、七段數(shù)碼管、按鈕、LCD、存儲器、定時器、鼠標、VGA等。在應用軟件的開發(fā)中,對于按鈕、發(fā)光二極管LED、七段數(shù)碼管等通用輸入輸出設備的編程比較簡單,而對于通用異步串口UART、LCD、VGA等字符模式外圍設備的編程就比較復雜。為了方便用戶對字符模式外圍設備的編程,HAL支持標準輸入、標準輸出和標準錯誤函數(shù),允許在程序中調(diào)用stdio.h中的I/O函數(shù)來完成對這些設備的訪問,也支持字符模式外圍設備的通用訪問。7 簡述SOPC的設計流程。SOPC硬件開發(fā)流程a) 創(chuàng)建Quartus II工程b) 創(chuàng)建Nios II系統(tǒng)模塊c) 配置Nios II系統(tǒng)d) 將Nios II系統(tǒng)模塊、LPM和用戶自定義模塊連接起來e) 編譯、引腳分配、編程下載SOPC軟件開發(fā)流程Nios II
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC TR 15413:2001 EN Information technology - Font services - Abstract service definition
- 2025至2030中國電子郵件簽名軟件行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國電動鎖具行業(yè)市場深度分析及競爭格局與投資前景報告
- 2025至2030中國瑜伽短褲行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國特級面粉行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 學習動機的強化策略教育心理學的視角
- 智能教育未來展望組委會的角色與影響
- 2025秋季教務處工作計劃:打造8大體系 培育時代新人
- 數(shù)字化教育資源的建設與共享
- 抖音商戶短視頻拍攝流程標準化規(guī)定
- 2025年河南省中考數(shù)學試題卷(含官方答案)
- 診后疾病管理行業(yè)體系構(gòu)建
- 2025年中國鹽酸環(huán)丙沙星行業(yè)市場調(diào)查、投資前景及策略咨詢報告
- 帶狀皰疹課件(課件演示)
- T/CAS 413-2020排水管道檢測和非開挖修復工程監(jiān)理規(guī)程
- 2025-2030中國搜索引擎行業(yè)現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 藍莓鮮果采購合同協(xié)議
- 方劑歌訣(廣中醫(yī)版)
- 青年教師培養(yǎng)與發(fā)展指南
- 四新安全教育培訓
- 農(nóng)村基礎設施建設小微權(quán)力清單流程
評論
0/150
提交評論