根據(jù)FPGA數(shù)字跑表的設(shè)計_第1頁
根據(jù)FPGA數(shù)字跑表的設(shè)計_第2頁
根據(jù)FPGA數(shù)字跑表的設(shè)計_第3頁
根據(jù)FPGA數(shù)字跑表的設(shè)計_第4頁
根據(jù)FPGA數(shù)字跑表的設(shè)計_第5頁
免費預(yù)覽已結(jié)束,剩余20頁可下載查看

下載本文檔

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

文檔簡介

1、閃“,辿張 VIZ H;廠丨即W別:川叫二ZH訃.第|畀叩*>aI現(xiàn)代電子技術(shù)實驗報告數(shù)字跑表的設(shè)計.3目錄誤!未定義書簽。一、基于FPGA的VHDL設(shè)計流程1.1 VHDL語言介紹1.1.1 VHDL 的特點1.2 FPGA開發(fā)介紹1.2.1 FPGA 簡介1.2.2 FPGA設(shè)計流程1.2.3實驗板使用芯片XC3S200A介紹二、總體電路的設(shè)計 2.1設(shè)計要求2.2系統(tǒng)工作原理2.3單元電路的劃分三、電子秒表的單元電路設(shè)計3.1電子秒表的設(shè)計過程及結(jié)果分析3.1.1分頻器3.1.2按鍵消抖控制電路計數(shù)器寄存器顯示模塊使能模塊頂層設(shè)計3.1.33.1.43.1.53.1.63.1.7四

2、、4.14.24.3五、頂層設(shè)計分配引腳和下載實現(xiàn)測試結(jié)果及結(jié)論經(jīng)驗及收獲.3.3.4.4.4.6.6.7.7.8.8.9.12:15181819.20.22、基于FPGA的VHDL設(shè)計流程1.1 VHDL語言介紹VHDL(Very-high-s peed In tegrated Circuit Hardware Descri ption Lan guage) 誕生于 1982 年.1987 年底,VHDL 被 IEEE ( The Institute of Electrical and Electronics Engineers )和美國國防部確認為標準硬件描述語言.自IEEE公布了 VHD

3、L的標準版本(IEEE-1076 )之 后,各EDA公司相繼推出了自己的 VHDL設(shè)計環(huán)境,并宣布自己的設(shè)計工具可以和VHDL接口 .此后VHDL在電子設(shè)計領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標準硬件描述語言.1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上 擴展VHDL的內(nèi)容,公布了新版本的 VHDL,即IEEE標準的1076-1993版本現(xiàn)在,VHDL和VERILOG作為IEEE的工業(yè)標準硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言.有專家認為,在新的世紀中,VHDL和VERILOG語言將承擔(dān)起幾乎全部的數(shù)字系統(tǒng)設(shè)

4、計任務(wù)1.1.1 VHDL語言的特點與其他硬件描述語言相比,VHDL具有以下特點:1、功能強大、設(shè)計靈活:VHDL具有功能強大的語言結(jié)構(gòu),可以用簡潔明確的源代碼來描述復(fù)雜的邏輯控制.它具有多層次的設(shè)計描述功能,層層細化,最后可直接生成電路 級描述.VHDL支持同步電路、異步電路和隨機電路的設(shè)計,這是其他硬件描述語言所不能比擬的.VHDL還支持各種設(shè)計方法,既支持自底向上的設(shè)計,又支持自頂向下的設(shè)計; 既支持模塊化設(shè)計,又支持層次化設(shè)計.2、支持廣泛、易于修改:由于VHDL已經(jīng)成為IEEE標準所規(guī)范的硬件描述語言,大多數(shù)EDA工幾乎都支持 VHDL,這為VHDL的進一步推廣和廣泛應(yīng)用奠定了基礎(chǔ).

5、在硬件電路設(shè)計過程中,主要的設(shè)計文件是用 VHDL編寫的源代碼,因為VHDL易讀和結(jié) 構(gòu)化,所以易于修改設(shè)計.3、強大的系統(tǒng)硬件描述能力:VHDL具有多層次的設(shè)計描述功能,既可以描述系統(tǒng)級 電路,又可以描述門級電路.而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混合級描述.另外,VHDL支持慣性延遲和 傳輸延遲,還可以準確地建立硬件電路模型.VHDL支持預(yù)定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來較大的 自由度,使設(shè)計人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型.4、獨立于器件的設(shè)計、與工藝無關(guān):設(shè)計人員用VHDL進行設(shè)計時,不需要首先考慮 選擇完成設(shè)計的器件,就可以集中精力進行

6、設(shè)計的優(yōu)化.當設(shè)計描述完成后,可以用多種 不同的器件結(jié)構(gòu)來實現(xiàn)其功能 .5、很強的移植能力:VHDL是一種標準化的硬件描述語言,同一個設(shè)計描述可以被不 同的工具所支持,使得設(shè)計描述的移植成為可能 .6、易于共享和復(fù)用:VHDL采用基于庫(Library )的設(shè)計方法,可以建立各種可再次利用的模塊.這些模塊可以預(yù)先設(shè)計或使用以前設(shè)計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設(shè)計中進行復(fù)用,可以使設(shè)計成果在設(shè)計人員之間進行交流和共享 減少硬件電路設(shè)計.1.2 FPGA開發(fā)介紹現(xiàn)場可編程門陣列(FPGA)器件是八十年代中期出現(xiàn)的新產(chǎn)品 ,它的應(yīng)用大大地方便 了 IC的設(shè)計,因而隨著數(shù)字技術(shù)日

7、益廣泛的應(yīng)用 ,以FPGA為代表的ASIC器件得到了迅 速的普及和發(fā)展,器件集成度和速度都在高速增長 .傳統(tǒng)的電路設(shè)計過程是: 先畫原理圖、把原理圖繪制成印制電路板圖、再制版、安裝、調(diào)試.有了 FPGA,我們只需要在計算機上繪出原理圖,再運行相應(yīng)的軟件,就可把所設(shè)計 的邏輯電路在FPGA中實現(xiàn).所有步驟均可自動完成.電子設(shè)計工程師自己設(shè)計專用集成 電路成為了一件很容易的事情.FPGA作為專用集成電路(ASIC )概念上的一個新型范疇和門類,以其高度靈活的用戶現(xiàn)場編程方式,現(xiàn)場定義高容量數(shù)字單片系統(tǒng)的能力,能夠重復(fù)定義、反復(fù)改寫的新穎 功能,為復(fù)雜數(shù)字系統(tǒng)設(shè)計、研制以及產(chǎn)品開發(fā)提供了有效的技術(shù)手

8、段.電子應(yīng)用設(shè)計工程師應(yīng)用FPGA技術(shù)不僅可避免通常 ASIC單片系統(tǒng)設(shè)計周期長,前期投資風(fēng)險大的弱 點,而且克服了過去板級通用數(shù)字電路應(yīng)用設(shè)計的落后,繁瑣和不可靠性.目前FPGA的兩個重要發(fā)展與突破是,大多數(shù)廠商在其高端器件上都提供了片上的處 理器(如 CPU、DSP)等硬核(Hard Core)或固化核(Fixed Core).比如 Xilinx 的 Virtex II Pro芯片可以提供 Power PC,而Altera的Stratix、Excalibur等系列芯片可以提供 Nios、 DSP和Arm等模塊.在FPGA上集成微處理器,使SOPC設(shè)計更加便利與強大.另一個發(fā) 展是在不同器件

9、商推出的高端芯片上大都集成了高速串行收發(fā)器,一般能夠達到3Gb/s以上的數(shù)據(jù)處理能力,在Xilinx、Altera、Lattice都有相應(yīng)的器件型號提供該功能.這些新功能使FPGA的數(shù)據(jù)吞吐能力大幅度增強.122 FPGA設(shè)計流程對于目標器件為FPGA和CPLD的HDL設(shè)計,其工程設(shè)計的基本流程如圖(HDL罕/S幵序、HOB殊合昭'如穌件.ytu-測試電躋,細程器下*fccfe皺現(xiàn)1礎(chǔ)備再47旳JT訪a*圖仆PGA設(shè)計流程圖焙絲関” SXAIvl立 件,HOL屈筈1、文本編輯用任何文本編輯器都可以進行,通常VHDL文件保存為vhd文件,Verilog文件保存為v 文件.2、使用編譯工具

10、編譯源文件HDL的編譯器有很多ACTIVE公司,MODELSIM 公司,SY NP LICITY 公司,SYN OP SYS 公司,VERIBEST公司等都有自己的編譯器.3、邏輯綜合將源文件調(diào)入邏輯綜合軟件進行綜合.綜合的目的是在于將設(shè)計的源文件由語言轉(zhuǎn)換為實際的電路.但是此時還沒有在芯片中形成真正的電路.這一步的最終目的是生成門電路級的網(wǎng)表(Netlist).4、布局、布線將第3步生成的網(wǎng)表文件調(diào)入PLD廠家提供的軟件中進行布線,即把設(shè)計好的邏輯安放到CPLD / FPGA內(nèi).這一步的目的是生成用于下載 (編程Programming)的編程文件.在 這一步,將用到第3步生成的網(wǎng)表,并根據(jù)C

11、PLD/FPGA廠商的器件容量,結(jié)構(gòu)等進行布 局、布線.這就好像在設(shè)計 PCB時的布局布線一樣.先將各個設(shè)計中的門根據(jù)網(wǎng)表的內(nèi)容 和器件的結(jié)構(gòu)放在器件的特定部位然后,在根據(jù)網(wǎng)表中提供的各門的連接,把各個門的輸入輸出連接起來.最后,生成一個供編程的文件.這一步同時還會加一些時序信息 (Timing)到你的設(shè)計項目中去,以便于你做后仿真.5、后仿真利用在布局布線中獲得的精確參數(shù) ,用仿真軟件驗證電路的時序.(也叫布局布線仿真 或時序仿真).這一步主要是為了確定你的設(shè)計在經(jīng)過布局布線之后,是不是還滿足你的設(shè)計要求.6、編程,下載如果前幾步都沒有發(fā)生錯誤,并且符合設(shè)計要求,這一步就可以將由適配器等產(chǎn)生

12、的配 置或下載文件通過編程器或下載電纜下載到目標芯片中.7、硬件測試硬件測試的目的是為了在更真實的環(huán)境中檢驗HDL設(shè)計的運行情況,特別是對于HDL程序設(shè)計上不是十分規(guī)范,語義上含有一定歧義的程序 .123實驗板使用芯片XC3S200A介紹本實驗設(shè)計中采用的是 Xilinx公司的ETL-001 FPGA開發(fā)板進行開發(fā)設(shè)計,該開發(fā)板 所提供的主芯片 XC3S200A是Xilinx公司最新推出的90nm半導(dǎo)體工藝的低端低成本的 FPGA芯片,可以廣泛地運用在通信,軍事,電力,控制,消費電子,汽車電子絕大多數(shù)電子應(yīng) 用領(lǐng)域芯片主要特性如下表 1所示:系統(tǒng)門存邏輯單 元口BRAMK 跋專用乘時鐘管 理器

13、(DCXl )夕最大用 戶10 口 PS大分布 式 RAMKB*XC3E200A<2<X)K Q2血419知表1實驗板XC3S200A該芯片是基于SRAM工藝的超大規(guī)??删幊踢壿嬓酒峁┝烁哌_20萬的等效系統(tǒng)門,3854個查找表(LUT) ,3854個寄存器(FF),288Kbit的塊狀SRAM以及16個18*18 的乘法器,以及60對差分l/O,LVD.芯片主要特性如上表示.二、系統(tǒng)總體設(shè)計2.1電子秒表的設(shè)計任務(wù)目標1、跑表精度為0.01秒2、 跑表計時范圍為:1小時3、設(shè)置開始計時/停止計時、復(fù)位兩個按鈕4、 顯示工作方式:用六位 BCD七段數(shù)碼管顯示讀數(shù).顯示格式:00:

14、00:00 擴展功能:按鍵消抖;選手時間分時顯示;2.2系統(tǒng)工作原理系統(tǒng)基本流程圖如圖:右英 掘蕩器廿始,復(fù)位 按鍵選丁到終點訃£ 時存/収按鍵FT消抖電路數(shù)據(jù)數(shù)據(jù)鎖存讀取圖1系統(tǒng)基本流程圖2.3單元電路的劃分根據(jù)要求設(shè)計的電路包括以下幾個模塊:1. 分頻器:由于我們要以 1ms為最小單位進行計時.分頻器的功能是對晶體振蕩器產(chǎn)生的48MHz時鐘信號進行分頻 產(chǎn)生1KHZ的基準信號,對晶體振蕩器產(chǎn)生的時鐘信號進 行分頻,產(chǎn)生時間基準信號.所以需要這個模塊2. 計數(shù)鎖存器:由于我們要實現(xiàn)按不同的鍵讓秒表產(chǎn)生不同的反應(yīng)對時間基準脈沖進行計數(shù),完成計時功能.并完成對數(shù)據(jù)的鎖存使顯示保持暫停.

15、所以需要這個模塊控制3. 控制器:由于我們要實現(xiàn)按不同的鍵讓秒表產(chǎn)生不同的反應(yīng)計數(shù)器的運行、停止以及復(fù)位,產(chǎn)生鎖存器的使能信號.4. 按鍵消抖電路:由于普通按鍵會產(chǎn)生抖動現(xiàn)象,只按一下,可能出現(xiàn)多次抖動的現(xiàn)象使按鍵不靈敏.所以需要消除按鍵輸入信號抖動的影響,輸出單脈沖.5.掃描顯示的控制電路: 包括掃描計數(shù)器、數(shù)據(jù)選擇器和7段譯碼器,控制8個數(shù)碼管 以掃描方式顯示計時結(jié)果.單元電路劃分總框圖如下圖2:鎖存器攔掩顯示控瓶(包括掃描控制和顯示譯碼)11按叢i7*h希抖電路i9!去相 - -丨 LED ;! i電路;nca圖2單元電路劃分總框圖二、單兀電路設(shè)計3.1單元電路設(shè)計思路3.1.1分頻器分

16、頻器的功能是對晶體振蕩器產(chǎn)生的48MHz時鐘信號進行分頻,產(chǎn)生1KHZ和100Hz4800次分頻,從而得到1khz的信號對于頻率為480000.的基準信號.對于頻率為1khz的信號,分頻系數(shù)為48000,因此需要一個24000進制的計數(shù) 器,每當計數(shù)24000個時鐘,分頻輸出信號C1000取反一次,c1000取反兩次得到一個周期 的信號.這樣可實現(xiàn)對輸入時鐘信號的 100hz的信號,原理相同,分頻系數(shù)為生成的分頻器模塊如圖3所示:fdivoclkincWOO-c100圖3分頻器模塊其中,clkin為48MHz晶振時鐘信號;c1000為分頻輸出的1KHz時鐘信號,c100為分 頻輸出的100Hz

17、時鐘信號.設(shè)計程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_arith.ALL;use IEEE.STD_LOGIC_u nsig ned.ALL; en tity fdiv isSTD_LOGIC;STD_LOGIC;STD_LOGIC);Port ( clki n : inc1000 : outc100 : outend fdiv;architecture Behavioral of fdiv issig nal c1000_te mp:i nteger range 0 to 23999:=0; sig n

18、al c100_te mp:i nteger range 0 to 239999:=0; sig nal fd1000,fd100:STD_LOGIC:='0'beginpro cess (elk in) isbeginif risin g_edge(clk in) the nif c1000_te mp=23999 then c1000_te mp <=0;fd1000<= not fd1000; else c1000_te mp <=c1000_tem p+1;end if;end if;end pro cess;c1000 <=fd1000;p r

19、ocess (clk in) isbeginif risin g_edge(clk in) the nif c100_te mp=239999 then c100_te mp <=0;fd100<= not fd100; else c100_te mp <=c100_tem p+1;end if;end if;end pro cess;c100 <=fd100;end Behavioral;仿真波形圖4如下圖4分頻器仿真波形由仿真波形可知,分頻器的設(shè)計是符合預(yù)期期望的 ,當產(chǎn)生輸入晶振信號時,經(jīng)過分頻 器內(nèi)部處理的信號最終產(chǎn)生兩個輸出信號 ,分別是1KHZ和100HZ,

20、由波形圖可以看出,當 時鐘信號計數(shù)24000個脈沖時,1KZ的波形翻轉(zhuǎn)一次,從而產(chǎn)生1KZ的信號 侗理,100Hz 的信號也符合預(yù)期設(shè)計.3.1.2按鍵消抖由于實驗板上的按鍵,在按下和松開的短暫時間里,會出現(xiàn)抖動現(xiàn)象,這樣會嚴重影響 按鍵的效果,故此需要設(shè)計一個消抖電路,來消除這種不利的影響,按鍵消抖電路不僅可 以消除按鍵抖動的影響,而且每按一次鍵,只輸出一個脈沖,其寬度為一個時鐘周期,達到 整形的作用,按鍵消抖電路是利用時間基準信號對按鍵按下時產(chǎn)生的抖動進行整形,使其輸出為正常的脈沖信號的.消抖設(shè)計框圖5如下:XD1 F-B.clkihkeyout1hkeyin曰圖5消抖模塊設(shè)計原理圖程序設(shè)

21、計如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_u nsig ned.ALL;use IEEE.STD_LOGIC_arith.ALL;en tity XD isPort ( clk1k : in STD_LOGIC;keyi n : in STD_LOGIC; keyout : out STD_LOGIC); end XD;architecture Behavioral of XD issig nal key1,key2:std_logic;sig nal coun t:i nteger range 1 to 3

22、:=1beginpro cess(clk1k,key in)beginif clk1k'eve nt and clk1k='1' the nif coun t=3 the n key1<='1'else key1<='0'coun t<=co un t+1;end if; key2<=key1;end if;if key in=' O' the ncoun t<=1;end if;end pro cess;keyout<=(not key1) and key2; end Behavior

23、al;仿真波形圖6如下:在按鍵按下的一個周期內(nèi),消抖模塊輸出僅有一個時鐘周期,抑制了按鍵按下狀態(tài)不穩(wěn)的情況。3.1.3計數(shù)器十進制計數(shù)器是每當計數(shù)從1記到9時,下一位產(chǎn)生一個進位信號,進而輸入到下一個計數(shù)器的時鐘輸入端,進而達到秒表所要求的計數(shù)進制.計數(shù)器是在時鐘基準信號的情況 下,分頻為我們需要的計時時間信號,電子秒表的最低位為0.01秒,即需要100Hz的脈沖,當最低一位計數(shù)滿 9時,向前進1,同時自身為0,重復(fù)循環(huán).本設(shè)計中采用的是異步計時器,當上一位計數(shù)到9時,產(chǎn)生時鐘進位,下一時鐘在進位成立時,開始計時加1,以此內(nèi)推,最終輸出6組,計時信號,分別是0.01秒位,0.1秒位,秒個位,秒

24、十位,分個位,分十位.當計數(shù)到59'59' 59時計數(shù)清零為00'00' 00重復(fù)計時.數(shù)字跑表 需要用六位七段數(shù)碼管顯示,數(shù)碼管顯示數(shù)字分別用 2個6進制計數(shù)器和4個10進制計 數(shù)器對其計數(shù),從秒表顯示的右側(cè)到左側(cè)計數(shù)器分別為十進制、十進制、十進制、六進制、十進制、六進制、十進制計數(shù)器,如圖7所示:日日日日日日圖7數(shù)碼管顯示示意圖計數(shù)器的設(shè)計圖如下:10進制計數(shù)器的框圖如下:count101<irstcarryout口carryin coiintou 1(3:0)圖810進制計數(shù)器的框圖6進制計數(shù)器的框圖如下:counterstcarryoutelk圖9

25、 6進制計數(shù)器的框圖相應(yīng)程序設(shè)計如下:10進制程序設(shè)計如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_arith.ALL;use IEEE.STD_LOGIC_u nsig ned.ALL;en tity cou nt101 isPort ( rst : in STD_LOGIC;elk : in STD_LOGIC;carryin : in STD_LOGIC;carryout : out STD_LOGIC;cou ntout : out STD_LOGIC_VECTOR (3 dow nto 0); end c

26、ou nt101;architecture Behavioral of coun t101 issig nal cou nt:STD_LOGIC_VECTOR (3 dow nto 0):="0000" beginpro cess(clk,rst)beginif rst='1' then cou nt<="0000"else if risin g_edge (clk) the nif carry in='1' the nif cou nt<"1001" then cou nt<=cou

27、 nt+1;else coun t<="0000"end if;end if;else n ull;end if;end if;end pro cess;coun tout<=co unt;carryout<='1' whe n carryi n-1' and cou nt="1001" else '0' end Behavioral;6進制程序設(shè)計如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_arith.ALL;us

28、e IEEE.STD_LOGIC_u nsig ned.ALL;en tity count6 isPort ( rst : in STD_LOGIC;clk : in STD_LOGIC;carryin : in STD_LOGIC;carryout : out STD_LOGIC;cou ntout : out STD_LOGIC_VECTOR (3 dow nto 0); end coun t6;architecture Behavioral of count6 issig nal cou nt:STD_LOGIC_VECTOR (3 dow nto 0):="0000"

29、;beginpro cess(clk,rst)beginif rst='1' then cou nt<="0000"else if risin g_edge (clk) the nif carry in='1' the nif cou nt<"0101" then cou nt<=cou nt+1;else coun t<="0000"end if;end if;else n ull;end if;end if;end pro cess;coun tout<=co unt;

30、carryout<='1' whe n carryi n-1' and cou nt="0101" else 'O' end Behavioral;仿真波形如下圖:10進制的仿真波形如下:1-Lnh_n_ryL_-Kri-|rnrnm-innmr7r.nr7L-inn_nrTT-yI . I I k J u- A I J IT 1 L li L - J l' - U J I r d r.iLl 1 iTiI i I nII CtJ3 La*:l icjj a 1-T t T J3J:圖10 10進制計數(shù)器仿真圖形由圖可見

31、,設(shè)計模塊對波形個數(shù)計數(shù),從產(chǎn)生結(jié)果為2進制的4位數(shù).從0000 到1001,結(jié)果正確.二廠廠Lj rm飛二 _V"n6進制的仿真波形如下:廠TO Ml 1111 hntell bi in 阪 tor Xin hatoil inii in te: h蟄陽u lim bri lig Ki 圖11 6進制計數(shù)器的仿真波形有圖可知,6進制計數(shù)器設(shè)計正確,脈沖時鐘上升沿到來時計數(shù)器開始計數(shù), 從0000到1001然后重復(fù)循環(huán).3.1.4寄存器數(shù)據(jù)鎖存器,在使能為1時,將當前數(shù)據(jù)送到寄存器中保存,可記錄4組數(shù)據(jù),當再次使能時,將寄存的數(shù)據(jù)賦給輸出,顯示寄存器中的4組數(shù)據(jù).設(shè)計框圖如下圖:-sa

32、ve2iiactibmhoutiO) mltMjySjOj*shout td:O)tmlMpOl-AL5lnp:0d5aut(3jQ)+L則陽yout側(cè)f ft fl Ai . “ . “ .- “-a-1圖12寄存器設(shè)計框圖寄存器程序設(shè)計如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;use IEEE.STD_LOGIC_ARITH.ALL;en tity save2 isPort ( lacthi n : inreset : inmhi n : inmlin : inshi n : in

33、slin : indsi n : incsin : inmhout : outmlout : out shout : outslout : outdsout : outcsout : outend save2;STD_LOGIC;STD_LOGIC;STD_LOGIC_VECTOR (3 dow nto 0); STD_LOGIC_VECTOR (3 dow nto 0); STD_LOGIC_VECTOR (3 dow nto 0); STD_LOGIC_VECTOR (3 dow nto 0); STD_LOGIC_VECTOR (3 dow nto 0); STD_LOGIC_VECTO

34、R (3 dow nto 0);STD_LOGIC_VECTOR (3 dow nto 0);STD_LOGIC_VECTOR (3 dow nto 0); STD_LOGIC_VECTOR (3 dow nto 0); STD_LOGIC_VECTOR (3 dow nto 0);STD_LOGIC_VECTOR (3 dow nto 0); STD_LOGIC_VECTOR (3 dow nto 0);architecture Behavioral of save2 issig nal mh1out,ml1out,sh1out,sl1out,ds1out,cs1out:std_logic_

35、vector(3 downto 0);sig nal mh2out,ml2out,sh2out,sl2out,ds2out,cs2out:std_logic_vector(3 downto 0);sig nal mh3out,ml3out,sh3out,sl3out,ds3out,cs3out:std_logic_vector(3 downto 0);sig nal mh4out,ml4out,sh4out,sl4out,ds4out,cs4out:std_logic_vector(3 downto 0);sig nal mh11out,ml11out,sh11out,sl11out,ds11

36、out,cs11out:std_logic_vector(3 dow nto 0);sig nal cou nt:std_logic_vector(3 dow nto 0):="0000"beginpro cess(lacth in, reset)beginif reset='1' the ncou nt<="0000"elsif lacth in'event and lacth in='1' the nif cou nt="1OOO" thencou nt<="0000&

37、quot; elsecoun t<=co un t+1; end if;end if;end p rocess;pro cess(co un t,mh in, mli n,shin, sli n,dsin,csin) begincase count iswhe n "0000"=>mh1out<=mh in; ml1out<=mli n; sh1out<=sh in; sl1out<=sli n; ds1out<=ds in; cs1out<=cs in;mh11out<=mh in; ml11out<=mli n

38、; sh11out<=sh in; sl11out<=sli n; ds11out<=ds in; cs11out<=cs inwhe n "0001"=> mh2out<=mhi n; ml2out<=mli n;sh2out<=shi n;sl2out<=sli n;ds2out<=dsi n;cs2out<=cs in;mh11out<=mh in; ml11out<=mli n; sh11out<=sh in; sl11out<=sli n; ds11out<=ds in

39、; cs11out<=cs inwhe n "0010"=> mh3out<=mh in; ml3out<=mli n; sh3out<=sh in; sl3out<=sli n; ds3out<=ds in; cs3out<=cs in;mh11out<=mh in; ml11out<=mli n; sh11out<=sh in; sl11out<=sli n; ds11out<=ds in; cs11out<=cs inwhe n "0011"=> mh4out

40、<=mhi n; ml4out<=mli n;sh4out<=shi n;sl4out<=sli n;ds4out<=dsi n;cs4out<=cs in;mh11out<=mh in; ml11out<=mli n; sh11out<=sh in; sl11out<=sli n; ds11out<=ds in; cs11out<=cs inwhe n "0100"=>mh11out<=mhi n; ml11out<=mli n;sh11out<=shi n;sl11out&l

41、t;=sli n;ds11out<=dsi n;cs11 out<=cs in;whe n "0101"=> mh11out<=mh1out;ml11out<=ml1out;sh11out<=sh1out;sl11out<=sl1out;ds11out<=ds1out;cs 11out<=cs1out;whe n "0110"=> mh11out<=mh2out;ml11out<=ml2out;sh11out<=sh2out;sl11out<=sl2out;ds11out

42、<=ds2out;cs 11out<=cs2out;whe n "0111"=> mh11out<=mh3out;ml11out<=ml3out;sh11out<=sh3out;sl11out<=sl3out;ds11out<=ds3out;cs 11out<=cs3out;whe n "1000"=> mh11out<=mh4out;ml11out<=ml4out;sh11out<=sh4out;sl11out<=sl4out;ds11out<=ds4out;cs

43、 11out<=cs4out;whe n others=> mh11out<=mh in; ml11out<=mli n; sh11out<=sh in; sl11out<=sli n; ds11out<=ds in; cs11out<=cs inend case;end p rocess;mhout<=mh11out;mlout<=ml11out;shout<=sh11out;slout<=sl11out;dsout<=ds11out;csout <=cs11out;end Behavioral;寄存器仿真波

44、形圖如下:由圖,在按鍵脈沖上升沿來到之前,輸入直接輸出,程序只進行了對數(shù)據(jù)的存儲功能 于截圖大小在報告中顯示范圍的有限,只記錄第4次按鍵及之后的圖形),當?shù)谖宕?latchin時,輸出為第一次按鍵時的輸入值,按第6次時,輸出為第二次記錄時的輸入值 次類推,當?shù)?次按鍵以后再按第9次,程序又重復(fù)循環(huán).圖13寄存器仿真波形圖(由,按下.依3.1.5顯示控制模塊ZIIL/VILT;'-11EJLT I J 丄亠 _ ”> 一 ! _ 5 _UrT I亡I'S. S.fi & S. 0. B. S.實驗板上設(shè)計了 8位7段數(shù)碼顯示,以便編程者將基本的數(shù)字信息通過數(shù)碼管顯示

45、出 來,原理圖如下:圖15顯示控制原理圖在控制電路部分,使用了一組PNP三極管(Q1Q8)將正極的控制電平由高電平轉(zhuǎn)為 低電平,這樣數(shù)碼管的位數(shù)和段位的控制都統(tǒng)一成了低電平有效.在位數(shù)控制部分加入了3-8譯碼器以簡化位數(shù)編碼,用DIG接口的二進制數(shù)據(jù) 000111直接表示數(shù)碼管第一位 到第八位的位選信號.利用動態(tài)掃描原理和設(shè)計要求,顯示控制模塊包含一個六選一數(shù)據(jù)器、三八譯碼器和 七段譯碼器.六進制計數(shù)器通過 ent依次加1來控制使每次只將一路輸入數(shù)據(jù)賦給輸出,六選一數(shù)據(jù)選擇器利用 ent的依次加1來輪番從低位至高位選擇輸入口,三八譯碼器根據(jù)ent的值判斷選擇輸入端,以完成顯示的位選.用case

46、語句來決定當輸入口決定以后,輸入 口的數(shù)據(jù)要顯示為具體多少數(shù)值.此步驟對照數(shù)碼管的段選來完成.原理框圖的設(shè)計如下所示:elk -controself 7 0mh(3.G)-ml (3.0)3h(3:0jct<3:0)lfrd7(6.0)5>-圖16顯示控制模塊框圖具體程序設(shè)計如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_arith.ALL;use IEEE.STD_LOGIC_u nsig ned.ALL;en tity contro isPort ( clk : inmh : inml : insh

47、: insi : inds : inSTD_LOGIC;STD_LOGIC_VECTOR (3 dow nto 0);STD_LOGIC_VECTOR (3 dow nto 0);STD_LOGIC_VECTOR (3 dow nto 0);STD_LOGIC_VECTOR (3 dow nto 0);STD_LOGIC_VECTOR (3 dow nto 0);STD_LOGIC_VECTOR (3 dow nto 0);cs : insel : out STD_LOGIC_VECTOR (7 dow nto 0); led7 : out STD_LOGIC_VECTOR (6 dow nt

48、o 0); end con tro;architecture Behavioral of contro issig nal cnt:STD_LOGIC_VECTOR (2 dow nto 0):="000" sig nal data:STD_LOGIC_VECTOR (3 dow nto 0);begin-sca n choose 1 from 6p rocess(clk)beginif risin g_edge (clk) the nif cnt="101" then cnt<="000" else cn t<=c nt

49、+1;end if;end if;end pro cess;p rocess(c nt,cs,ds,sl,sh,ml,mh) begincase ent iswhe n "000"=>data<=cs;sel<="11101111"whe n "001"=>data<=ds;sel<="11011111"whe n "010"=>data<=sl;sel<="01111111"whe n "011"=&

50、gt;data<=sh;sel<="11111110"whe n "100"=>data<=ml;sel<="11111011"whe n "101"=>data<=mh;sel<="11110111"whe n others=>n ull;end case;end pro cess;-Ied7:to decide the nu mberP rocess(data) beginled7<="0000000"case

51、data is whe n "0000" => led7<="0000001"whe n "0001" => led7<="1001111"whe n "0010" => led7<="0010010"whe n "0011" => led7<="0000110"whe n "0100" => led7<="1001100"whe n &

52、quot;0101" => led7<="0100100"whe n "0110" => led7<="0100000"whe n "0111" => led7<="0001111"when "1000" => led7<="0000000"whe n "1001" => led7<="0000100"whe n others => n ul

53、l;end case;end pro cess;end Behavioral;根據(jù)設(shè)計所做仿真如圖:0"IS A吒EbFfcs比TI E> dCBT"叭L*:n * uiBru片叱詔?rmlisa :k血曠:ilitZHi 耳祈i Eiil一期圖17顯示控制模塊仿真波形圖根據(jù)仿真波形,隨著計數(shù)脈沖個數(shù)的逐次遞加,38譯碼器將數(shù)據(jù)輸入端選擇出來,實現(xiàn)對數(shù)碼管的位選,7段譯碼器對應(yīng)相應(yīng)的數(shù)字,即段選信號,從而使顯示控制模塊同時實 現(xiàn)了位選與段選的功能.3.1.6使能模塊使能模塊的主要功能是產(chǎn)生計數(shù)器的使能控制信號.在輸入信號的作用下,輸出信號發(fā)生翻轉(zhuǎn).根據(jù)系統(tǒng)設(shè)計要求,設(shè)

54、置開始計時/停止計時按鍵,該按鍵每按一次,跑表開始或停 止計時,再按一次,停止或開始計時.該模塊的設(shè)計原理框圖如下所示:ena圖18使能原理設(shè)計框圖其設(shè)計程序如下所示:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_anth.ALL;use IEEE.STD_LOGIC_u nsig ned.ALL; en tity en isPort ( k : in STD_LOGIC;e : out STD_LOGIC);end en;architecture Behavioral of en issig nal e1:STD_LOGIC;beginpro cess(k)beginif risin g_edge(k) the n e1<=not e1; end if;end pro cess;e<=e1;end Behavioral;由仿真圖可見,每當按鍵一次,在上升沿來到時,輸出信號波形圖翻轉(zhuǎn)一次,實現(xiàn)每按 鍵一次,使能信號變化一次.四、設(shè)計實現(xiàn)4.1頂層設(shè)計在ise軟件中,可以采用原理圖的輸入方式完成電路的設(shè)計.分單元設(shè)計好每個模塊以后,通過電路圖將各個部分連接到一起,實現(xiàn)頂層設(shè)計,頂層設(shè)計系統(tǒng)圖如下:4.2管腳分配和下載實現(xiàn)管腳分配圖示在系統(tǒng)設(shè)計圖中可以看出,管腳分

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論