FPGA課程設(shè)計報告多功能數(shù)字鐘講解_第1頁
FPGA課程設(shè)計報告多功能數(shù)字鐘講解_第2頁
FPGA課程設(shè)計報告多功能數(shù)字鐘講解_第3頁
FPGA課程設(shè)計報告多功能數(shù)字鐘講解_第4頁
FPGA課程設(shè)計報告多功能數(shù)字鐘講解_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.z......資料....多功能數(shù)字鐘開課學(xué)期:2014—2015學(xué)年第二學(xué)期課程名稱:FPGA課程設(shè)計學(xué)院:信息科學(xué)與工程學(xué)院專業(yè):集成電路設(shè)計與集成系統(tǒng)班級:**:姓名:任課教師:2015年7月21日說明論文書寫要求與說明嚴(yán)格按照模板進行書寫。自己可以自行修改標(biāo)題的題目關(guān)于字體:題目:三號黑體加粗。正文:小四號宋體,行距為1.25倍。嚴(yán)禁抄襲和雷同,一經(jīng)發(fā)現(xiàn),成績即判定為不及格?。?!設(shè)計提交說明設(shè)計需要提交“電子稿”和“打印稿”;“打印稿”包括封面、說明(即本頁容)、設(shè)計容三部分;訂書機左邊裝訂?!半娮痈濉鄙辖唬何募麨椤癋PGA課程設(shè)計報告-班級-**-.doc”,所有報告發(fā)送給班長,由班長統(tǒng)一打包后統(tǒng)一發(fā)送到付小倩老師?!按蛴「濉庇砂嚅L收齊后交到:12教305辦公室;上交截止日期:2015年7月31日17:00之前。TOC\o"1-3"\h\u24450第一章緒論325864關(guān)鍵詞:FPGA,數(shù)字鐘332162第二章FPGA的相關(guān)介紹4166452.1FPGA概述4300082.2FPGA特點4111892.3FPGA設(shè)計注意525707第三章QuartusII與VerilogHDL相關(guān)介紹7259743.1QuartusII7250263.2VerilogHDL711204第四章設(shè)計方案865204.1數(shù)字鐘的工作原理850864.2按鍵消抖897504.3時鐘復(fù)位8182754.4時鐘校時818094.5數(shù)碼管顯示模塊。86908第五章方案實現(xiàn)與驗證9279795.1產(chǎn)生秒脈沖9305555.2秒個位進位952855.3按鍵消抖938515.4復(fù)位按鍵設(shè)置10232935.5數(shù)碼管顯示。10286475.6RTL結(jié)構(gòu)總圖112133第六章實驗總結(jié)1313625第七章VerilogHDL源代碼附錄14第一章緒論現(xiàn)代社會的標(biāo)志之一就是信息產(chǎn)品的廣泛使用,而且是產(chǎn)品的性能越來越強,復(fù)雜程度越來越高,更新步伐越來越快。支撐信息電子產(chǎn)品高速發(fā)展的基礎(chǔ)就是微電子制造工藝水平的提高和電子產(chǎn)品設(shè)計開發(fā)技術(shù)的發(fā)展。前者以微細(xì)加工技術(shù)為代表,而后者的代表就是電子設(shè)計自動化(electronicdesignautomatic,EDA)技術(shù)。本設(shè)計采用的VHDL是一種全方位的硬件描述語言,具有極強的描述能力,能支持系統(tǒng)行為級、寄存器傳輸級和邏輯門級這三個不同層次的設(shè)計;支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描述形式的混合描述,覆蓋面廣,抽象能力強,因此在實際應(yīng)用中越來越廣泛。ASIC是專用的系統(tǒng)集成電路,是一種帶有邏輯處理的加速處理器;而FPGA是特殊的ASIC芯片,與其它的ASIC芯片相比,它具有設(shè)計開發(fā)周期短、設(shè)計制造成本低、開發(fā)工具先進、標(biāo)準(zhǔn)產(chǎn)品無需測試、質(zhì)量穩(wěn)定以及可實時在線檢測等優(yōu)點。在控制系統(tǒng)中,鍵盤是常用的人機交換接口,當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下的時候,系統(tǒng)應(yīng)該完成該鍵所對應(yīng)的功能。因此,按鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。根據(jù)鍵盤結(jié)構(gòu)的不同,采用不同的編碼方法,但無論有無編碼以及采用什么樣的編碼,最后都要轉(zhuǎn)換成為相應(yīng)的鍵值,以實現(xiàn)按鍵功能程序的轉(zhuǎn)移。[1]鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大擴展了鐘表原先的報時功能。諸如定時自動報警、定時啟閉電路、定時開關(guān)烘箱、通斷動力設(shè)備,甚至各種定時電氣的自動啟用等,所有這些都是以鐘表數(shù)字化為基礎(chǔ)的。因此研究數(shù)字鐘以及擴大其應(yīng)用有著非常現(xiàn)實的意義。關(guān)鍵詞:FPGA,數(shù)字鐘第二章FPGA的相關(guān)介紹FPGA(Field-ProgrammableGateArray),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。2.1FPGA概述系統(tǒng)設(shè)計師可以根據(jù)需要通過可編輯的連接把FPGA部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個芯片里。一個出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計者而改變,所以FPGA可以完成所需要的邏輯功能。FPGA一般由3種可編程電路和一個用于存放編程數(shù)據(jù)的靜態(tài)存儲器SRAM組成。這3種可編程電路是:可編程邏輯模塊(CLB--ConfigurableLogicBlock)、輸入/輸出模塊(IOB--I/OBlock)和互連資源(IR—InterconnectResource)??删幊踢壿嬆KCLB是實現(xiàn)邏輯功能的基本單元,它們通常規(guī)則的排列成一個陣列,散布于整個芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長度的連接線段和一些可編程連接開關(guān),它們將各個CLB之間或CLB、IOB之間以及IOB之間連接起來,構(gòu)成特定功能的電路。FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計,而且消耗更多的電能。但是他們也有很多的優(yōu)點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA。因為這些芯片有比較差的可編輯能力,所以這些設(shè)計的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計轉(zhuǎn)移到一個類似于ASIC的芯片上。另外一種方法是用CPLD(復(fù)雜可編程邏輯器件備)。2.2FPGA特點FPGA的基本特點主要有:1)采用FPGA設(shè)計ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。3)FPGA部有豐富的觸發(fā)器和I/O引腳。4)FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容??梢哉f,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。編程互連資源IR可以將FPGA部的CLB和CLB之間、CLB和IOB之間連接起來,構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。FPGA是由存放在片RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時需要對片的RAM進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FPGA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對其編程。2.3FPGA設(shè)計注意不管你是一名邏輯設(shè)計師、硬件工程師或系統(tǒng)工程師,甚或擁有所有這些頭銜,只要你在任何一種高速和多協(xié)議的復(fù)雜系統(tǒng)中使用了FPGA,你就很可能需要努力解決好器件配置、電源管理、IP集成、信號完整性和其他的一些關(guān)鍵設(shè)計問題。不過,你不必獨自面對這些挑戰(zhàn),因為在當(dāng)前業(yè)領(lǐng)先的FPGA公司里工作的應(yīng)用工程師每天都會面對這些問題,而且他們已經(jīng)提出了一些將令你的設(shè)計工作變得更輕松的設(shè)計指導(dǎo)原則和解決方案。本次實驗所采用的FPGA器件是AlteraCycloneV5CSEMA5F31C6NFPGA實物圖FPGA數(shù)碼管介紹,每節(jié)數(shù)碼管低電平點亮高電平熄滅。

LED序號如下圖所示:根據(jù)上圖所示的順序,可以得出顯示的數(shù)組代碼。4'd0:HE*0=7'b1000000; //0 低電平點亮高電平熄滅4'd1:HE*0=7'b1111001; //14'd2:HE*0=7'b0100100; //24'd3:HE*0=7'b0110000; //34'd4:HE*0=7'b0011001; //44'd5:HE*0=7'b0010010; //54'd6:HE*0=7'b0000010; //64'd7:HE*0=7'b1111000; //74'd8:HE*0=7'b0000000; //84'd9:HE*0=7'b0010000; //9default:HE*0=7'b1111111; //不符合條件的顯示零第三章QuartusII與VerilogHDL相關(guān)介紹3.1QuartusIIQuartusII是Altera公司的綜合性PLD/FPGA開發(fā)軟件,原理圖、VHDL、VerilogHDL以及AHDL(AlteraHardware支持DescriptionLanguage)等多種設(shè)計輸入形式,嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三方EDA工具。QuartusII軟件擁有友好的界面,使用便捷,功能強大,當(dāng)中可編程邏輯設(shè)計環(huán)境采用完成集成化,是先進的EDA工具軟件。該軟件具備諸多特點(例如:開放性,與結(jié)構(gòu)無聯(lián)系,多平臺設(shè)計,完全集成化,設(shè)計庫豐富、工具模塊化等),支持原理圖、VHDL、VerilogHDL以及AHDL等多種設(shè)計輸入形式。QuartusII能夠在多系統(tǒng)上使用,為用戶的設(shè)計方式提供了完善的圖形界面。具有運行速度快,界面統(tǒng)一,功能集中,學(xué)用簡單等特點。3.2VerilogHDLVerilogHDL是一種硬件描述語言(HDL:HardwareDescriptionLanguage),以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可以表示邏輯電路圖、邏輯表達(dá)式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。VerilogHDL和VHDL是世界上最流行的兩種硬件描述語言,都是在20世紀(jì)80年代中期開發(fā)出來的。前者由GatewayDesignAutomation公司(該公司于1989年被Cadence公司收購)開發(fā)。兩種HDL均為IEEE標(biāo)準(zhǔn)。第四章設(shè)計方案4.1數(shù)字鐘的工作原理振蕩器產(chǎn)生穩(wěn)定的高頻脈沖信號,作為數(shù)字鐘的時間基準(zhǔn),然后經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖。秒計數(shù)器滿60后向分計數(shù)器進位,分計數(shù)器滿60后向小時計數(shù)器進位,小時計數(shù)器按照“24翻0”規(guī)律計數(shù)。計數(shù)滿后各計數(shù)器清零,重新計數(shù)。計數(shù)器的輸出分別經(jīng)譯碼器送數(shù)碼管顯示。計時出現(xiàn)誤差時,可以用校時電路校時、校分??刂菩盘栍扇齻€獨立按鍵輸入。輸入信號選擇FPGA器件上的50MHZ時鐘信號。4.2按鍵消抖因為按鍵的物理結(jié)構(gòu)并非理想式開關(guān),在按鍵按下后會在一個很短的時間出現(xiàn)電平抖動的情況,因此需要對按鍵進行消抖處理。這里的按鍵消抖與單片機中的按鍵消抖問題有所不同,不能采用延時的方法進行按鍵消抖,這里我選用對時鐘脈沖計數(shù)的方式來判斷按鍵是否按下。采用50MHZ時鐘信號,實測160ms的消抖時長較為合適,即8000000個時鐘上升沿。4.3時鐘復(fù)位按下復(fù)位按鍵后,所有位清零。4.4時鐘校時時鐘計時過程中,可對時鐘進行校時。本次設(shè)計不考慮對秒位進行校時,分鐘的個位和小時的個位加到10時會自動進位,因此只對分鐘的個位和小時的個位設(shè)置可以加1的校時按鈕,即可實現(xiàn)校時功能。整體比較容易實現(xiàn)。4.5數(shù)碼管顯示模塊。選擇需要顯示的時鐘位數(shù)作為敏感詞,用上述給出的顯示代碼對時鐘的每一位分別進行顯示處理。第五章方案實現(xiàn)與驗證5.1產(chǎn)生秒脈沖always(posedgeclk) //敏感詞為50MHZ時鐘上升沿。。。。。。 count=count+1; if(count==32'd50000000) //產(chǎn)生一個一秒的脈沖, begin count=0; count_s0=count_s0+1; //秒個位計數(shù) end如代碼展現(xiàn),當(dāng)計數(shù)器count記到50000000個時鐘上升沿的時候,向秒個位進1.5.2秒個位進位 if(count_s0==4'd10) begin count_s0=0; count_s1=count_s1+1; //產(chǎn)生秒十位進位 end當(dāng)秒的個位計數(shù)到10的時候,向秒的十位進位。5.3按鍵消抖

if(!inrst_m0) count0=count0+1; if(count0==32'd8000000&&!inrst_m0) begin count0=0; count_m0=count_m0+1; end對時鐘秒沖進行計數(shù),計數(shù)達(dá)到8000000時,判斷此時的電平是否為0,若還是為0,則判斷按鍵按下,執(zhí)行分鐘個位加1操作。5.4復(fù)位按鍵設(shè)置 begin if(!reset) //按鍵按下為邏輯0 begin count=0; //復(fù)位置零 count_s0=0;count_s1=0; count_m0=0;count_m1=0; count_h0=0;count_h1=0; end else復(fù)位按鍵按下后所有位置零。5.5數(shù)碼管顯示。always(count_s0) //秒個位顯示 begin case(count_s0) 4'd0:HE*0=7'b1000000; //0 低電平點亮高電平熄滅 4'd1:HE*0=7'b1111001; //1 4'd2:HE*0=7'b0100100; //2 4'd3:HE*0=7'b0110000; //3 4'd4:HE*0=7'b0011001; //4 4'd5:HE*0=7'b0010010; //5 4'd6:HE*0=7'b0000010; //6 4'd7:HE*0=7'b1111000; //7 4'd8:HE*0=7'b0000000; //8 4'd9:HE*0=7'b0010000; //9 default:HE*0=7'b1111111; //不符合條件的顯示零 endcase end5.6RTL結(jié)構(gòu)總圖顯示部分如下圖:判斷主體如下圖:部分引腳圖展現(xiàn)最終實驗現(xiàn)象:實驗總結(jié)其實本次的多功能數(shù)字鐘設(shè)計其實應(yīng)該還有很多其他的方法,比如用到外部中斷功能進行時鐘的校時,采用按鍵輸入加數(shù)碼管閃爍的方式進行校時位的選擇,但限于時間較短,這部分知識空白,所以本次設(shè)計實有所缺陷。經(jīng)歷了本次FPGA的設(shè)計,有很多感受,首先就是看了一點數(shù)字鐘設(shè)計方面的資料,遇到很多不理解的地方,于是就需要再和同學(xué)進行研究討論,在討論的過程中,能聽到其他人的思路,感覺特別有意思,同樣的功能,實現(xiàn)的方法有許許多多,努力把自己的想法實現(xiàn),或是選擇一種你喜歡的設(shè)計借鑒一下,兩者都是很好的選擇。通過這次設(shè)計實驗,著實培養(yǎng)了我們獨立思考、解決問題的能力,從最一開始的一籌莫展,沒有一點思路,感覺像平底拔樓一樣,從兩手空空到產(chǎn)生一個控制電路,從無到有,這是創(chuàng)造的力量。同時,和其他同學(xué)討論的過程也很重要,要說的還有就是最后實驗成功的喜悅是無可替代的,就好像你親手種的果樹長出了果實,養(yǎng)的雞下了雞蛋,是一種創(chuàng)造的喜悅,整個心就像是一個大箱子里面放著一塊糖,隱隱約約總能感覺到一絲甜蜜。數(shù)碼管顯示的數(shù)字鐘是常見的技術(shù),這次基于FPGA的多功能數(shù)字鐘設(shè)計具有很高的工程價值和現(xiàn)實意義。讓我們將知識服務(wù)于生活,將知識用于實踐,鍛煉了我們發(fā)現(xiàn)問題解決問題的能力。這次FPGA的多功能數(shù)字鐘設(shè)計,加深了我們對FPGA設(shè)計的理解,培養(yǎng)了我們的邏輯思維和動手操作能力,使我們將知識與技能起來,使我們每個人的都在不斷進步,提高了專業(yè)技能,提高了動手實踐的綜合能力。VerilogHDL源代碼附錄moduleclock(reset,inrst_m0,inrst_h0,clk,HE*0,HE*1,HE*2,HE*3,HE*4,HE*5);inputclk,reset,inrst_m0,inrst_h0;outputreg[6:0]HE*0,HE*1,HE*2,HE*3,HE*4,HE*5;reg[31:0]count=0,count0=0,count1=0; //實際寬度為25reg[3:0]count_s0=0,count_s1=0, count_m0=0,count_m1=0, count_h0=0,count_h1=0;always(posedgeclk) begin if(!inrst_m0) count0=count0+1; if(count0==32'd8000000&&!inrst_m0)//按鍵消抖 begin count0=0; count_m0=count_m0+1; end if(!inrst_h0) count1=count1+1; if(count1==32'd8000000&&!inrst_h0) begin count1=0; count_h0=count_h0+1; end if(!reset) //按鍵按下為邏輯0 begin count=0; //復(fù)位置零 count_s0=0;count_s1=0; count_m0=0;count_m1=0; count_h0=0;count_h1=0; end else count=count+1; if(count==32'd50000000) //產(chǎn)生一個一秒的脈沖, begin count=0; count_s0=count_s0+1; //秒個位計數(shù) end else if(count_s0==4'd10) begin count_s0=0; count_s1=count_s1+1; //產(chǎn)生秒十位進位 end else if(count_s1==4'd6) begin count_s1=0; count_m0=count_m0+1; end else if(count_m0==4'd10) //分個位計數(shù) begin count_m0=0; count_m1=count_m1+1; end else if(count_m1==4'd6) //分十位計數(shù) begin count_m1=0; count_h0=count_h0+1; end else if(count_h0==4'd10) //時個位計數(shù) begin count_h0=0; count_h1=count_h1+1; end else if(count_h0==4&&count_h1==2) //滿24判斷 begin count_h0=0; count_h1=0; endendalways(count_s0) //秒個位顯示 begin case(count_s0) 4'd0:HE*0=7'b1000000; //0 低電平點亮高電平熄滅 4'd1:HE*0=7'b1111001; //1 4'd2:HE*0=7'b0100100; //2 4'd3:HE*0=7'b0110000; //3 4'd4:HE*0=7'b0011001; //4 4'd5:HE*0=7'b0010010; //5 4'd6:HE*0=7'b0000010; //6 4'd7:HE*0=7'b1111000; //7 4'd8:HE*0=7'b0000000; //8 4'd9:HE*0=7'b0010000; //9 default:HE*0=7'b1111111; //不符合條件的顯示零 endcase endalways(count_s1) //秒十位顯示 begin case(count_s1) 4'd0:HE*1=7'b1000000; //0 低電平點亮高電平熄滅 4'd1:HE*1=7'b1111001; //1 4'd2:HE*1=7'b0100100; //2 4'd3:HE*1=7'b0110000; //3 4'd4:HE*1=7'b0011001; //4 4'd5:HE*1=7'b0010010; //5 default:HE*1=7'b1111111; //不符合條件的顯示零 endcase endalways(count_m0) //分個位顯示 begin case(count_m0) 4'd0:HE*2=7'b1000000; //0 低電平點亮高電平熄滅 4'd1:HE*2=7'b1111001; //1 4'd2:HE*2=7'b0100100; //2 4'd3:HE*2=7'b0110000; //3 4'd4:HE*2=7'b0011001; //4 4'd5:HE*2=7'b0010010; //5 4'd6:HE*2=7'b0000010; //6 4'd7:HE*2=7'b1111

溫馨提示

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

評論

0/150

提交評論