版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、教材:EDA與數(shù)字系統(tǒng)設(shè)計李國麗 朱維勇 欒銘主編l門電路、觸發(fā)器等稱為邏輯器件;l由邏輯器件構(gòu)成,能執(zhí)行某單一功能的電路,如計數(shù)器、譯碼器、加法器等,稱為邏輯功能部件;l由邏輯功能部件組成的能實現(xiàn)復(fù)雜功能的數(shù)字電路稱數(shù)字系統(tǒng)。 圖0-1 數(shù)字系統(tǒng)框圖l明確設(shè)計要求,確定系統(tǒng)的輸入/輸出 ;l確定整體設(shè)計方案 ;l自頂向下(top-down)的模塊化設(shè)計方法 。l選用通用集成電路芯片構(gòu)成數(shù)字系統(tǒng);l應(yīng)用可編程邏輯器件實現(xiàn)數(shù)字系統(tǒng);l設(shè)計專用集成電路(單片系統(tǒng))。l應(yīng)用可編程邏輯器件(Programmable Logic Device PLD)實現(xiàn)數(shù)字系統(tǒng)設(shè)計,是目前利用EDA(Electron
2、ic Design Automation )技術(shù)設(shè)計數(shù)字系統(tǒng)的潮流。l這種設(shè)計方法以數(shù)字系統(tǒng)設(shè)計軟件為工具,將傳統(tǒng)數(shù)字系統(tǒng)設(shè)計中的搭建調(diào)試用軟件仿真取代,對計算機上建立的系統(tǒng)模型,用測試碼或測試序列測試驗證后,將系統(tǒng)實現(xiàn)在PLD芯片或?qū)S眉呻娐飞?,這樣最大程度地縮短了設(shè)計和開發(fā)時間,降低了成本,提高了系統(tǒng)的可靠性。l數(shù)字集成電路的發(fā)展過程: 電子管 晶體管 小中規(guī)模集成電路(SSI,MSI) 大規(guī)模集成電路(LSI) 超大規(guī)模集成電路(VLSIC) 具有特定功能的專用集成電路(Application Specific Integrated Circuit ASIC) 為使ASIC的設(shè)計周期盡
3、可能短, 出現(xiàn)了現(xiàn)場可編程邏輯器件(Field Programmable Logic Device FPLD),其中應(yīng)用最廣泛的當(dāng)屬CPLD和FPGA。 CPLD:Complex Programmable Logic Device FPGA :Field Programmable Gate Array 統(tǒng)稱為PLD或CPLD/FPGA。 l早期: PROM、 EPROM 、EEPROM l70年代中期:Programmable Logic array PLAl 70年代末:美國MMI公司Programmable array Logic PAL l80年代中期:Altera公司Generic A
4、rray Logic GAL 共同特點:低密度PLD,結(jié)構(gòu)簡單,設(shè)計靈活, 規(guī)模小,難以實現(xiàn)復(fù)雜的邏輯功能。l80年代中期:Altera公司 Erasable Programmable Logic Device EPLD l1985年:Xilinx公司 Field Programmable Gate Array FPGA l80年代末:Lattice公司提出In System Programmable ISP)技術(shù),相繼出現(xiàn)了一系列具備在系統(tǒng)可編程能力的復(fù)雜可編程邏輯器件 (Complex Programmab1e Logic Device CPLD)。 共同特點:高密度、高速度、低功耗結(jié)構(gòu)體
5、系更靈活、適用范圍更寬 ,設(shè)計風(fēng)險為零。l90年代以后,高密度PLD在生產(chǎn)工藝、器件的編程和測試技術(shù)等方面都有了飛速發(fā)展,CPLD的集成度一般可達數(shù)千甚至上萬門 。 Altera的EPF10K10每片含62000158000個可使用門,重復(fù)擦寫次數(shù)達10萬次以上。lPLA、PAL、GAL、EPLD、FPGA、ISP-PLD的基本結(jié)構(gòu)在數(shù)字電子技術(shù)基礎(chǔ)的第八章有介紹專門用于開發(fā)FPGA和CPLD的EDA工具分為五個模塊:1設(shè)計輸入編輯器(xilinx的Foundation、Altera的MAX+plus2等) ;2仿真器(如Mentor公司的ModelSim,Cadence公司的Verilog-
6、XL,NC-Verilog等) ;3HDL綜合器(Synopsys公司的FPGA Compiler、FPGA Express 等);4適配器(或部局布線器)(如Lattice公司的ispEXPERT 中有自己的適配器);5下載器(編程器)。1、EPF10K10,EPF10K10A等2、MAX7000系列(如MAX7000S中的MAX7128)3、EPM9320等l圖形輸入方式(.gdf文件);lHDL (Hardware Description Language)語言輸入方式 1)VHDL語言 (Very High Speed Intergated Circuit Hardware Descr
7、iption Language) 2)Verilog HDL語言設(shè)計輸入設(shè)計輸入圖形或HDL語言輸入編譯編譯Compiler項目校驗、項目校驗、仿真仿真Simulate編程或下載編程或下載Program或Configurel進入Windows操作系統(tǒng),打開MAX+Plus2;l啟動FileProjectName 菜單,輸入設(shè)計文件的名稱(給出文件存儲路徑);l點擊AssignDevice菜單,選擇器件(EPM7128SLC84-6或EPF10K10LC84-4);l啟動FileNew菜單,選擇Graphic Editor,打開原理圖編輯器;l元器件放置;l在元器件之間添加連線;l添加輸入、輸出
8、引腳,并給它們命名;l保存原理圖。l啟動MaxplusII/Compiler菜單,選擇Start,開始編譯;l若電路有錯,編譯器停止編譯,并顯示出錯信息;l若電路無錯,則編譯通過,生成.sof、.pof文件,以備硬件下載或編程時用。l注意:編譯只對頂層文件進行注意:編譯只對頂層文件進行 編譯通過后就可進行時序模擬: 1、建立波形輸入文件: 1)打開菜單File/New,選Waveform Editor File(.scf),OK; 2)在波形編輯器窗口的Name下單擊鼠標(biāo)右鍵,出現(xiàn)浮動菜單,選Enter Nodes from SNF出現(xiàn)對話框; 3)在Type 區(qū)選Inputs和 Output
9、s,單擊 List按鈕,可在 其右下方看到設(shè)計中的輸入輸出信號,單擊=可將這些信號選到Selected Nodes&Groups區(qū),OK; 4)在菜單File中選 Save。 2、編輯輸入節(jié)點波形:1)在菜單Options中選中Snap to Grid 和Show Grid,并打開 Grid Size設(shè)置仿真時間;2)使用繪制圖形工具條繪制輸入節(jié)點波形;3)選File中Save存盤。3、時序模擬:1)在菜單Maxplus2中選Simulator;2) 單擊Start,開始模擬;3)模擬完畢,單擊Open Scf得模擬結(jié)果,可對結(jié)果進行檢查(注意有動態(tài)延時和競爭冒險現(xiàn)象 )。l啟動Maxplus
10、II/Floorplan Editor菜單,則顯示該設(shè)計項目的管腳分配;l用戶可根據(jù)下載板情況,改變管腳分配。l下載板有兩種: 1.北京理工達勝科技有限公司生產(chǎn)的下載板,芯片管腳與外圍信號沒有連接,需在實驗中由你連接; 2.東南大學(xué)東訊通生產(chǎn)的DXT-BIII型EDA實驗開發(fā)系統(tǒng), 芯片管腳與外圍信號已連接好,必須根據(jù)下表改變管腳分配.圖1-2-15 PLD引腳與外部人工連接EPF10K10LC84-4圖1-2-16 PLD引腳與外部器件連接鎖定圖1216 PLD管腳與外部器件連接鎖定器件名稱器件名稱信號名信號名10K10管管腳腳器件名稱器件名稱信號名信號名10K10管管腳腳輸出發(fā)光管L12R
11、25數(shù)據(jù)開關(guān)K229輸出發(fā)光管L12G24數(shù)據(jù)開關(guān)K330輸出發(fā)光管L1123數(shù)據(jù)開關(guān)K435輸出發(fā)光管L1022數(shù)據(jù)開關(guān)K536輸出發(fā)光管L921數(shù)據(jù)開關(guān)K637輸出發(fā)光管L819數(shù)據(jù)開關(guān)K738輸出發(fā)光管L718數(shù)據(jù)開關(guān)K839輸出發(fā)光管L665數(shù)據(jù)開關(guān)K947輸出發(fā)光管L564數(shù)據(jù)開關(guān)K1048輸出發(fā)光管L462數(shù)據(jù)開關(guān)K1149輸出發(fā)光管L361數(shù)據(jù)開關(guān)K1250輸出發(fā)光管L260數(shù)據(jù)開關(guān)K1351輸出發(fā)光管L1G59數(shù)據(jù)開關(guān)K1452輸出發(fā)光管L1R58數(shù)據(jù)開關(guān)K1553數(shù)據(jù)開關(guān)K128數(shù)據(jù)開關(guān)K1654器件名稱器件名稱信號名信號名10K10管管腳腳器件名稱器件名稱信號名信號名10K
12、10管管腳腳數(shù)碼管M4M4A17揚聲器SP27M4B16時鐘信號CP11M4C11時鐘信號CP243M4D10數(shù)碼管M3M3A9M3B8M3C7M3D6數(shù)碼管M2M2A5M2B3M2C83M2D81數(shù)碼管M1M1A80M1B79M1C78M1D73l將實驗板接口線與計算機并口連接,打開試驗箱電源;l啟動MaxliusII/Programmer菜單;l如果是第一次使用該軟件,啟動Options Hardware Setup菜單,在Hardware Type中選擇 ByteBlaster(MV)。l Configure即可完成下載。l l若下載后提示下載不成功信息,按以上各步檢查是否設(shè)置正確,并檢
13、查計算機與實驗箱硬件連接,排除故障,再次嘗試下載;l隨時可利用幫助信息(?),解決疑難問題;l相同名字的導(dǎo)線,在電氣上相連(P26);l器件可以旋轉(zhuǎn);l一組輸入或一組輸出時,可用BUS(組);l改變管腳后,應(yīng)再編譯一次,再下載。l進入Windows操作系統(tǒng),打開MAX+Plus2;l啟動FileProjectName 菜單,輸入設(shè)計文件的名稱(給出文件存儲路徑);l點擊AssignDevice菜單,選擇器件(EPM7128SLC84-6或EPF10K10LC84-4);l啟動FileNew菜單,選擇Text Editor file,打開原理圖編輯器;l鍵入程序;l在在FileSave as 保
14、存,生成保存,生成.v文件;文件;l以下步驟同圖形輸入法。有關(guān)Verilog HDL的詳細內(nèi)容參見第三章(P.98)l/*/l/ MODULE: adder l/ FILE NAME: add.v l/ VERSION: v1.0 l/ DATE: May 5th, 2003 l/ AUTHOR: Peter l/ CODE TYPE: RTL l/ DESCRIPTION: An adder with two inputs (1 bit), one output (2 bits). l/*/lmodule adder (in1, in2, sum);l l input in1,in2; l
15、output 1:0 sum;l wire in1,in2;l reg 1:0 sum;l l always (in1 or in2) l begin l sum=in1+in2;l endlendmodule模塊名(必須和存儲時的名稱相同)端口列表說明部分模塊主體結(jié)束行注釋部分模塊定義行事件控制的Always語句,一直監(jiān)測輸入信號,只要有變化,就執(zhí)行下面的塊語句。Case語句Case(敏感表達式)值1:塊語句1;值2:塊語句2;default:塊語句n+1;endcaselmodule decoder(out,in);loutput7:0 out;linput2:0 in;lreg7:0 o
16、ut;lalways(in)lbeginlcase(in)l3d0:out=8b00000001;l3d1:out=8b00000010;l3d2:out=8b00000100;l3d3:out=8b00001000;l3d4:out=8b00010000;l3d5:out=8b00100000;l3d6:out=8b01000000;l3d7:out=8b10000000;lendcaselendlendmodule d 十進制h 十六進制b 二進制o 八進制lmodule jsq16(q,clk,reset);loutput3:0q;lreg 3:0q;linput clk,reset;l
17、always (posedge clk or negedge reset)lbeginlif(!reset) q3:0=4b0000;lelselq3:0=q3:0+4b0001;lendlendmoduleif(表達式) 塊語句1;else 塊語句2; .v文件描述的功能模塊可以生成一個符號,放在用戶庫中,供其它原理圖輸入文件調(diào)用,調(diào)用的方法與從器件庫中取元器件的方法相同。生成功能模塊的方法為:選擇菜單filecreate default symbol,經(jīng)過與編譯相同的過程后,生成的功能模塊被放入用戶庫, l星期一上午講課,完成非門下載 先在先在F盤中設(shè)置一個自己的文件夾,例:盤中設(shè)置一個自
18、己的文件夾,例:F lgll星期一下午星期二:1.2、1.3所有練習(xí)l星期二下午4:00講課:掃描顯示電路l星期三:完成1.4所有練習(xí)l星期三下午:布置數(shù)字系統(tǒng)設(shè)計題l星期四星期五:完成數(shù)字系統(tǒng)設(shè)計一個實驗室Al 用發(fā)光管的狀態(tài)驗證設(shè)計是否滿足要求。在譯碼器設(shè)計時,這種方式是很直觀的,但在計數(shù)器設(shè)計時,這樣的驗證方式就顯得很不直觀,尤其當(dāng)計數(shù)器的位數(shù)增加時(如百進制計數(shù)),太多的發(fā)光管將使結(jié)果的讀出非常困難。lBCD碼驅(qū)動l直接驅(qū)動輸入輸出D C B AYa Yb Yc Yd Ye Yf Yg字形0 0 0 0 0 0 0 10 0 1 0 0 0 1 10 1 0 00 1 0 10 1 1
19、 00 1 1 11 0 0 0 1 0 0 11 0 1 01 0 1 11 1 0 0 1 1 0 11 1 1 01 1 1 11 1 1 1 1 1 00 1 1 0 0 0 01 1 0 1 1 0 11 1 1 1 0 0 10 1 1 0 0 1 11 0 1 1 0 1 11 0 1 1 1 1 11 1 1 0 0 0 0 1 1 1 1 1 1 11 1 1 0 0 1 11 1 1 0 1 1 10 0 1 1 1 1 11 0 0 1 1 1 00 1 1 1 1 0 11 0 0 1 1 1 1 1 0 0 0 1 1 10123456789AbCdEFDCBADCB
20、A圖1-2-16 PLD引腳與外部器件連接鎖定東南大學(xué)實驗箱的靜態(tài)顯示方式屬于BCD碼驅(qū)動撥向“靜態(tài)”輸入a b c d e f g輸出字形1 1 1 1 1 1 00 1 1 0 0 0 0 1 1 0 1 1 0 11 1 1 1 0 0 10 1 1 0 0 1 11 0 1 1 0 1 11 0 1 1 1 1 11 1 1 0 0 0 0 1 1 1 1 1 1 11 1 1 1 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 00 1 1 1 1 0 11 0 0 1 1 1 11 0 0 0 1 1 10123456789ABCDEF
21、當(dāng)采用直接驅(qū)動方式時,驅(qū)動一個數(shù)碼管需要七個電平信號,如果系統(tǒng)用來顯示結(jié)果的數(shù)碼管較多,應(yīng)考慮數(shù)字系統(tǒng)輸出信號占用PLD芯片管腳的問題,因為PLD芯片的管腳總數(shù)是有限的,例如F10K10,它的管腳總數(shù)是84,其中還有一些特定功能的管腳不能給用戶使用,能使用的管腳不到60個,所以直接驅(qū)動時,必須設(shè)法減少占用PLD芯片的管腳的數(shù)量。解決的方法是采用動態(tài)掃描顯示動態(tài)掃描顯示(管腳見表1-2-2)撥向“動態(tài)”l設(shè)計一個電路,使八個數(shù)碼管依次同時顯示0、1、2、A、B、E、F。動 態(tài) 掃描字 形 顯示十六進制計數(shù)module led(a,b,c,d,e,f,g,D);output a,b,c,d,e,f
22、,g;input3:0 D;reg a,b,c,d,e,f,g;always(D) begin case(D) 4d0:a,b,c,d,e,f,g=7b1111110; 4d1:a,b,c,d,e,f,g=7b0110000; 4d2:a,b,c,d,e,f,g=7b1101101; 4d3:a,b,c,d,e,f,g=7b1111001; 4d4:a,b,c,d,e,f,g=7b0110011; 4d5:a,b,c,d,e,f,g=7b1011011; 4d6:a,b,c,d,e,f,g=7b1011111; 4d7:a,b,c,d,e,f,g=7b1110000; 4d8:a,b,c,d,
23、e,f,g=7b1111111; 4d9:a,b,c,d,e,f,g=7b1111011; 4hA:a,b,c,d,e,f,g=7b1110111; 4hB:a,b,c,d,e,f,g=7b0011111; 4hC:a,b,c,d,e,f,g=7b1001110; 4hD:a,b,c,d,e,f,g=7b0111101; 4hE:a,b,c,d,e,f,g=7b1001111; 4hF:a,b,c,d,e,f,g=7b1000111; endcase end endmodulemodule decoder(out,in);output7:0 out;input2:0 in;reg7:0 out
24、;always(in)begincase(in)3d0:out=8b00000001;3d1:out=8b00000010;3d2:out=8b00000100;3d3:out=8b00001000;3d4:out=8b00010000;3d5:out=8b00100000;3d6:out=8b01000000;3d7:out=8b10000000;endcaseendendmodulelmodule saomiao(reset,clk,clk1,ms1,ms2,ms3,ms4,lms5,ms6,ms7,ms8,a,b,c,d,e,f,g);linput clk,reset,clk1;lreg
25、 3:0 in1;loutput ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;lreg ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;lreg 3:0 temp,flag;lalways(posedge clk)lbeginlms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8=8b00000000;lflag=flag+1;lcase (flag)l0:begin temp=in1;ms1=1;endl1:begin temp=in1;ms2=1;endl2:begin temp=in1;
26、ms3=1;endl3:begin temp=in1;ms4=1;endl4:begin temp=in1;ms5=1;endl5:begin temp=in1;ms6=1;endl6:begin temp=in1;ms7=1;endl7:begin temp=in1;ms8=1;endlendcaselcase(temp)l4d0:a,b,c,d,e,f,g=7b1111110;l4d1:a,b,c,d,e,f,g=7b0110000;l4d2:a,b,c,d,e,f,g=7b1101101;l4d3:a,b,c,d,e,f,g=7b1111001;l4d4:a,b,c,d,e,f,g=7b
27、0110011;l4d5:a,b,c,d,e,f,g=7b1011011;l4d6:a,b,c,d,e,f,g=7b1011111;l4d7:a,b,c,d,e,f,g=7b1110000;l4d8:a,b,c,d,e,f,g=7b1111111;l4d9:a,b,c,d,e,f,g=7b1111011;l4hA:a,b,c,d,e,f,g=7b1110111;l4hB:a,b,c,d,e,f,g=7b0011111;l4hC:a,b,c,d,e,f,g=7b1001110;l4hD:a,b,c,d,e,f,g=7b0111101;l4hE:a,b,c,d,e,f,g=7b1001111;l4
28、hF:a,b,c,d,e,f,g=7b1000111;ldefault:a,b,c,d,e,f,g=7b1111110;lendcaselendlalways(posedge clk1)lbegin if(!reset) in1=4b0000;l else begin in1=in1+1;lendlendlendmodule東南大學(xué)實驗箱完全用Verilog HDL完成 問題是要把兩個計數(shù)器輸出的個位和十位數(shù)分別顯示在不同的數(shù)碼管上,用Sel模塊實現(xiàn)。原理是:in1,in2in8為八個數(shù)碼管的BCD碼輸入端數(shù)據(jù),MS1有效時,in1的數(shù)據(jù)送MS1顯示;MS2有效時,in2的數(shù)據(jù)送MS2顯示;M
29、S8有效時,in8的數(shù)據(jù)送MS8顯示。八組數(shù)據(jù)可以不全部都有,如此例中,十二進制數(shù)的低四位送in1,高四位送in2,六十進制數(shù)的低四位送in3,高四位送in4,其余數(shù)據(jù)端為空。lmodule sel(in1,in2,in3,in4,in5,in6,in7,in8,clk,ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g);linput clk;linput 3:0 in1,in2,in3,in4,in5,in6,in7,in8;loutput ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;lreg ms1,
30、ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;lreg 3:0 temp,flag;lalways(posedge clk)lbeginlms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8=8b00000000;lflag=flag+1;lcase (flag)l0:begin temp=in1;ms1=1;endl1:begin temp=in2;ms2=1;endl2:begin temp=in3;ms3=1;endl3:begin temp=in4;ms4=1;endl4:begin temp=in5;ms5=1;endl5:begin
31、temp=in6;ms6=1;endl6:begin temp=in7;ms7=1;endl7:begin temp=in8;ms8=1;endlendcase實驗室Bl 用發(fā)光管的狀態(tài)驗證設(shè)計是否滿足要求。在譯碼器設(shè)計時,這種方式是很直觀的,但在計數(shù)器設(shè)計時,這樣的驗證方式就顯得很不直觀,尤其當(dāng)計數(shù)器的位數(shù)增加時(如百進制計數(shù)),太多的發(fā)光管將使結(jié)果的讀出非常困難。lBCD碼驅(qū)動l直接驅(qū)動輸入輸出D C B AYa Yb Yc Yd Ye Yf Yg字形0 0 0 0 0 0 0 10 0 1 0 0 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 0 1 0
32、0 11 0 1 01 0 1 11 1 0 0 1 1 0 11 1 1 01 1 1 11 1 1 1 1 1 00 1 1 0 0 0 01 1 0 1 1 0 11 1 1 1 0 0 10 1 1 0 0 1 11 0 1 1 0 1 11 0 1 1 1 1 11 1 1 0 0 0 0 1 1 1 1 1 1 11 1 1 0 0 1 11 1 1 0 1 1 10 0 1 1 1 1 11 0 0 1 1 1 00 1 1 1 1 0 11 0 0 1 1 1 1 1 0 0 0 1 1 10123456789AbCdEFDCBADCBA輸入a b c d e f g輸出字形1
33、 1 1 1 1 1 00 1 1 0 0 0 0 1 1 0 1 1 0 11 1 1 1 0 0 10 1 1 0 0 1 11 0 1 1 0 1 11 0 1 1 1 1 11 1 1 0 0 0 0 1 1 1 1 1 1 11 1 1 1 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 00 1 1 1 1 0 11 0 0 1 1 1 11 0 0 0 1 1 10123456789ABCDEF 當(dāng)采用直接驅(qū)動方式時,驅(qū)動一個數(shù)碼管需要七個電平信號,如果系統(tǒng)用來顯示結(jié)果的數(shù)碼管較多,應(yīng)考慮數(shù)字系統(tǒng)輸出信號占用PLD芯片管腳的問題,因為P
34、LD芯片的管腳總數(shù)是有限的,例如F10K10,它的管腳總數(shù)是84,其中還有一些特定功能的管腳不能給用戶使用,能使用的管腳不到60個,所以直接驅(qū)動時,必須設(shè)法減少占用PLD芯片的管腳的數(shù)量。解決的方法是采用動態(tài)掃描顯示l北理工生產(chǎn)的實驗箱,只能用動態(tài)掃描方式進行數(shù)碼管顯示。l硬件電路提供了一只3線8線譯碼器,輸入端為sel2,sel1,sel0,輸出接各個數(shù)碼管片選端。3線8線譯碼器輸入端l設(shè)計一個電路,使八個數(shù)碼管依次同時顯示0、1、2、A、B、E、F。module led(a,b,c,d,e,f,g,D);output a,b,c,d,e,f,g;input3:0 D;reg a,b,c,d
35、,e,f,g;always(D) begin case(D) 4d0:a,b,c,d,e,f,g=7b1111110; 4d1:a,b,c,d,e,f,g=7b0110000; 4d2:a,b,c,d,e,f,g=7b1101101; 4d3:a,b,c,d,e,f,g=7b1111001; 4d4:a,b,c,d,e,f,g=7b0110011; 4d5:a,b,c,d,e,f,g=7b1011011; 4d6:a,b,c,d,e,f,g=7b1011111; 4d7:a,b,c,d,e,f,g=7b1110000; 4d8:a,b,c,d,e,f,g=7b1111111; 4d9:a,b,
36、c,d,e,f,g=7b1111011; 4hA:a,b,c,d,e,f,g=7b1110111; 4hB:a,b,c,d,e,f,g=7b0011111; 4hC:a,b,c,d,e,f,g=7b1001110; 4hD:a,b,c,d,e,f,g=7b0111101; 4hE:a,b,c,d,e,f,g=7b1001111; 4hF:a,b,c,d,e,f,g=7b1000111; endcase endendmodule 譯碼器北京理工實驗箱module saomiaob(reset,clk,clk1,flag,a,b,c,d,e,f,g);input clk,reset,clk1;re
37、g 3:0 in1;output flag,a,b,c,d,e,f,g;reg a,b,c,d,e,f,g;reg2:0 flag;always(posedge clk)beginflag=flag+1;case(in1)4d0:a,b,c,d,e,f,g=7b1111110;4d1:a,b,c,d,e,f,g=7b0110000;4d2:a,b,c,d,e,f,g=7b1101101;4d3:a,b,c,d,e,f,g=7b1111001;4d4:a,b,c,d,e,f,g=7b0110011;4d5:a,b,c,d,e,f,g=7b1011011;4d6:a,b,c,d,e,f,g=7b1
38、011111;4d7:a,b,c,d,e,f,g=7b1110000;4d8:a,b,c,d,e,f,g=7b1111111;4d9:a,b,c,d,e,f,g=7b1111011;4hA:a,b,c,d,e,f,g=7b1110111;4hB:a,b,c,d,e,f,g=7b0011111;4hC:a,b,c,d,e,f,g=7b1001110;4hD:a,b,c,d,e,f,g=7b0111101;4hE:a,b,c,d,e,f,g=7b1001111;4hF:a,b,c,d,e,f,g=7b1000111;endcaseendalways(posedge clk1)begin if(!r
39、eset) in1=4b0000; else begin in1=in1+1;endendendmodule完全用Verilog HDL完成 問題是要把兩個計數(shù)器輸出的個位和十位數(shù)分別顯示在不同的數(shù)碼管上,用Selb模塊實現(xiàn)。原理是:in1,in2in8為八個數(shù)碼管的BCD碼輸入端數(shù)據(jù),sel2.0=000時,左邊數(shù)碼管(ms1)選中,in1送ms1;sel2.0=001時,第二數(shù)碼管(ms2)選中,in1送ms2;.sel2.0=111時,第八數(shù)碼管(ms8)選中,in1送ms8;八組數(shù)據(jù)可以不全部都有,如此例中,十二進制數(shù)的低四位送in1,高四位送in2,六十進制數(shù)的低四位送in3,高四位
40、送in4,其余數(shù)據(jù)端為空。北京理工實驗箱module selb(in1,in2,in3,in4,in5,in6,in7,in8,clk,flag,a,b,c,d,e,f,g);input clk;input 3:0 in1,in2,in3,in4,in5,in6,in7,in8;output a,b,c,d,e,f,g;output flag;reg a,b,c,d,e,f,g;reg 3:0 temp;reg 2:0 flag;always(posedge clk)beginflag=flag+1;case (flag)0:begin temp=in1;end1:begin temp=in2
41、;end2:begin temp=in3;end3:begin temp=in4;end4:begin temp=in5;end5:begin temp=in6;end6:begin temp=in7;end7:begin temp=in8;endendcasecase(temp)4d0:a,b,c,d,e,f,g=7b1111110;4d1:a,b,c,d,e,f,g=7b0110000;4d2:a,b,c,d,e,f,g=7b1101101;4d3:a,b,c,d,e,f,g=7b1111001;4d4:a,b,c,d,e,f,g=7b0110011;4d5:a,b,c,d,e,f,g=7
42、b1011011;4d6:a,b,c,d,e,f,g=7b1011111;4d7:a,b,c,d,e,f,g=7b1110000;4d8:a,b,c,d,e,f,g=7b1111111;4d9:a,b,c,d,e,f,g=7b1111011;/*4hA:a,b,c,d,e,f,g=7b1110111;4hB:a,b,c,d,e,f,g=7b0011111;4hC:a,b,c,d,e,f,g=7b1001110;4hD:a,b,c,d,e,f,g=7b0111101;4hE:a,b,c,d,e,f,g=7b1001111;4hF:a,b,c,d,e,f,g=7b1000111;*/default
43、:a,b,c,d,e,f,g=7bzzzzzzz;endcaseendendmodulel設(shè)計一個能進行時、分、秒計時的十二小時制或二十四小時制的數(shù)字鐘,并具有定時與鬧鐘功能,能在設(shè)定的時間發(fā)出鬧鈴音,能非常方便地對小時、分鐘和秒進行手動調(diào)節(jié)以校準(zhǔn)時間,每逢整點,產(chǎn)生報時音報時。 l主控電路l計數(shù)器模塊l掃描顯示 A、B:模式選擇,AB=00為模式0,計時狀態(tài); AB=01為模式1,手動校時狀態(tài); AB=10為模式2,鬧鐘設(shè)置狀態(tài)。Turn:turn=0時,在手動校對時,選擇調(diào)整分鐘部分; turn=1時,在手動校對時,選擇調(diào)整小時部分。Change:在手動校時或鬧鐘設(shè)置模式下,每按一次,計數(shù)
44、器加1。Reset:reset=0時,整個系統(tǒng)復(fù)位;reset=1時,系統(tǒng)計時或其它特殊功能操作。Reset1:reset1=0時,關(guān)閉鬧鈴信號; reset1=1時,可對鬧鈴進行設(shè)置。狀態(tài)顯示信號(發(fā)光管):LD_alert:指示是否設(shè)置了鬧鈴功能;LD_h:指示當(dāng)前調(diào)整的是小時信號;LD_m:指示當(dāng)前調(diào)整的是分鐘信號。l設(shè)計一個能進行拔河游戲的電路。l電路使用15個(或9個)發(fā)光二極管表示拔河的“電子繩”,開機后只有中間一個發(fā)亮,此即拔河的中心點。l游戲雙方各持一個按鈕,迅速地、不斷地按動,產(chǎn)生脈沖,誰按得快,亮點就向誰的方向移動,每按一次,亮點移動一次。l亮點移到任一方終端二極管時,這一
45、方就獲勝,此時雙方按鈕均無作用,輸出保持,只有復(fù)位后才使亮點恢復(fù)到中心。l由裁判下達比賽開始命令后,甲乙雙方才能輸入信號,否則,輸入信號無效。l用數(shù)碼管顯示獲勝者的盤數(shù),每次比賽結(jié)束自動給獲勝方加分。 l加/減計數(shù)器l譯碼器l得分計數(shù)顯示電路設(shè)計一個可容納四組參賽的數(shù)字式搶答器,每組設(shè)一個按鈕供搶答使用。搶答器具有第一信號鑒別和鎖存功能,使除第一搶答者外的按鈕不起作用;設(shè)置一個主持人“復(fù)位”按鈕,主持人復(fù)位后,開始搶答,第一信號鑒別鎖存電路得到信號后,用指示燈顯示搶答組別,揚聲器發(fā)出秒的音響。*設(shè)置犯規(guī)電路,對提前搶答和超時答題(例如3分鐘)的組別鳴笛示警,并由組別顯示電路顯示出犯規(guī)組別。 設(shè)
46、置一個計分電路,每組開始預(yù)置分,由主持人記分,答對一次加分,答錯一次減分。l鑒別鎖存模塊l答題計時模塊l計分電路模塊l掃描顯示模塊l1此模塊的關(guān)鍵是準(zhǔn)確判斷出第一搶答者并將其鎖存,實現(xiàn)的方法可使用觸發(fā)器或鎖存器,在得到第一信號后將輸入封鎖,使其它組的搶答信號無效。l2形成第一搶答信號后,用編碼、譯碼及數(shù)碼顯示電路顯示第一搶答者的組別,控制揚聲器發(fā)出音響,并啟動答題計時電路。鑒別鎖存模塊l設(shè)計一個洗衣機洗滌程序控制器,控制洗衣機的電機作如下規(guī)律運轉(zhuǎn): l用兩位數(shù)碼管預(yù)置洗滌時間(分鐘數(shù)),洗滌過程在送入預(yù)置時間后開始運轉(zhuǎn),洗滌中按倒計時方式對洗滌過程作計時顯示,用LED表示電機的正、反轉(zhuǎn),如果定
47、時時間到,則停機并發(fā)出音響信號。 l洗滌預(yù)置時間編碼模塊l減法計數(shù)顯示l時序電路l譯碼驅(qū)動模塊 l1設(shè)計一個能測量方波信號頻率的頻率計,測量結(jié)果用十進制數(shù)顯示。l2.測量的頻率范圍是110KHz,分成兩個頻段,即1999Hz,1KHz10KHz,用三位數(shù)碼管顯示測量頻率,用LED顯示表示單位,如亮綠燈表示Hz,亮紅燈表示KHz。3.具有自動校驗和測量兩種功能,即能用標(biāo)準(zhǔn)時鐘校驗測量精度。4.具有超量程報警功能,在超出目前量程檔的測量范圍時,發(fā)出燈光和音響信號。l脈沖信號的頻率就是在單位時間內(nèi)所產(chǎn)生的脈沖個數(shù),其表達式為f=N/T,f為被測信號的頻率,N為計數(shù)器所累計的脈沖個數(shù),T為產(chǎn)生N個脈沖
48、所需的時間。所以,在1秒時間內(nèi)計數(shù)器所記錄的結(jié)果,就是被測信號的頻率。l測量/校驗選擇模塊*l計數(shù)器模塊l送存選擇報警模塊l鎖存模塊l掃描顯示模塊 測量/校驗選擇模塊*輸入信號:選擇信號selet 被測信號meas 測試信號test輸出信號:CP1當(dāng)selet=0時,為測量狀態(tài),CP1=meas;當(dāng)selet=1時,為校驗狀態(tài),CP1=test。校驗與測量共用一個電路,只是被測信號CP1不同而已。l設(shè)置1秒定時信號(周期為2秒),在1秒定時時間內(nèi)的所有被測信號送計數(shù)器輸入端。l計數(shù)器對CP1信號進行計數(shù),在1秒定時結(jié)束后,將計數(shù)器結(jié)果送鎖存器鎖存,同時將計數(shù)器清零,為下一次采樣測量做好準(zhǔn)備。l
49、設(shè)置量程檔控制開關(guān)K,單位顯示信號Y,當(dāng)K=0時,為1999Hz量程檔,數(shù)碼管顯示的數(shù)值為被測信號頻率值,Y顯示綠色,即單位為Hz;當(dāng)K=1時,為1KHz10KHz量程檔,被測信號頻率值為數(shù)碼管顯示的數(shù)值乘1000,Y顯示紅色,即單位為KHz。l設(shè)置超出量程檔測量范圍示警信號alert。計數(shù)器由四級十進制計數(shù)構(gòu)成(帶進位C)。若被測信號頻率小于1KHz(K=0),則計數(shù)器只進行三級十進制計數(shù),最大顯示值為999.Hz,如果被測信號頻率超過此范圍,示警信號驅(qū)動燈光、揚聲器報警;若被測信號為1KHz10KHz(K=1),計數(shù)器進行四位十進制計數(shù),取高三位顯示,最大顯示值為9.99KHz,如果被測信
50、號頻率超過此范圍,報警。左第一位左第一位l設(shè)計一個電子密碼鎖,在鎖開的狀態(tài)下輸入密碼,密碼共4位,用數(shù)據(jù)開關(guān)K1K10分別代表數(shù)字1、2、9、0,輸入的密碼用數(shù)碼管顯示,最后輸入的密碼顯示在最右邊的數(shù)碼管上,即每輸入一位數(shù),密碼在數(shù)碼管上的顯示左移一位。可刪除輸入的數(shù)字,刪除的是最后輸入的數(shù)字,每刪除一位,密碼在數(shù)碼管的顯示右移一位,并在左邊空出的位上補充“0”。用一位輸出電平的狀態(tài)代表鎖的開閉狀態(tài)。為保證密碼鎖主人能打開密碼鎖,設(shè)置一個萬能密碼,在主人忘記密碼時使用。l密碼輸入刪除控制模塊l寄存模塊l比較模塊l掃描顯示 模塊設(shè)計一個具有7位顯示的電話按鍵顯示器,顯示器應(yīng)能正確反映按鍵數(shù)字,顯
51、示器顯示從低位向高位前移,逐位顯示按鍵數(shù)字,最低位為當(dāng)前顯示位,七位數(shù)字輸入完畢后,電話接通,揚聲器發(fā)出“嘟嘟”接通聲響,直到有接聽信號輸入,若一直沒有接聽,10秒鐘后,自動掛斷,顯示器清除顯示,揚聲器停止,直到有新號碼輸入。 l號碼輸入顯示控制模塊l主控制模塊l掃描顯示模塊 l設(shè)計一個由甲、乙雙方參賽,有裁判的3人乒乓球游戲機。l用8個(或更多個)LED排成一條直線,以中點為界,兩邊各代表參賽雙方的位置,其中一只點亮的LED指示球的當(dāng)前位置,點亮的LED依此從左到右,或從右到左,其移動的速度應(yīng)能調(diào)節(jié)。l當(dāng)“球”(點亮的那只LED)運動到某方的最后一位時,參賽者應(yīng)能果斷地按下位于自己一方的按鈕
52、開關(guān),即表示啟動球拍擊球。若擊中,則球向相反方向移動;若未擊中,則對方得1分。l一方得分時,電路自動響鈴3秒,這期間發(fā)球無效,等鈴聲停止后方能繼續(xù)比賽。l設(shè)置自動記分電路,甲、乙雙方各用2位數(shù)碼管進行記分顯示,每計滿21分為1局。l甲、乙雙方各設(shè)一個發(fā)光二極管,表示擁有發(fā)球權(quán),每隔5次自動交換發(fā)球權(quán),擁有發(fā)球權(quán)的一方發(fā)球才有效。l用雙向移位寄存器的輸出端控制LED顯示來模擬乒乓球運動的軌跡,先點亮位于某一方的第1個LED,由擊球者通過按鈕輸入開關(guān)信號,實現(xiàn)移位方向的控制。l也可用計數(shù)譯碼方式實現(xiàn)乒乓球運動軌跡的模擬,如利用加/減計數(shù)器的2個時鐘信號實現(xiàn)甲、乙雙方的擊球,由表示球拍的按鈕產(chǎn)生計數(shù)
53、時鐘,計數(shù)器的輸出狀態(tài)經(jīng)譯碼驅(qū)動LED發(fā)亮。l任何時刻都保持一個LED發(fā)亮,若發(fā)亮的LED運動到對方的終點,但對方未能及時輸入信號使其向相反方向移動,即失去1分。l控制電路決定整個系統(tǒng)的協(xié)調(diào)動作,必須嚴(yán)格掌握各信號之間的關(guān)系。l設(shè)計一個交通信號燈控制器,由一條主干道和一條支干道匯合成十字路口,在每個入口處設(shè)置紅、綠、黃三色信號燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時間停在禁行線外。l用紅、綠、黃發(fā)光二極管作信號燈,用傳感器或邏輯開關(guān)作檢測車輛是否到來的信號。l主干道處于常允許通行的狀態(tài),支干道有車來時才允許通行。主干道亮綠燈時,支干道亮紅燈;支干道亮綠燈時,主干道亮紅燈。
54、l主、支干道均有車時,兩者交替允許通行,主干道每次放行45秒,支干道每次放行25秒,設(shè)立45秒、25秒計時、顯示電路。l在每次由綠燈亮到紅燈亮的轉(zhuǎn)換過程中,要亮5秒黃燈作為過渡,使行駛中的車輛有時間停到禁行線外,設(shè)立5秒計時、顯示電路。l主、支干道用傳感器檢測車輛到來情況,實驗電路用邏輯開關(guān)代替。l45秒、25秒、5秒定時信號可用順計時,也可用倒計時,計時起始信號由主控電路給出,定時結(jié)束信號也輸入到主控電路,由主控電路啟、閉三色信號燈或啟動另一計時電路。l主控電路是核心,這是一個時序電路,其輸入信號為:l(1) 車輛檢測信號(A,B);l(2) 45秒、25秒、5秒定時信號(C,D,E)。l其狀態(tài)表為:l狀態(tài) 主干道 支干道 時間l0 綠燈亮,允許通行 紅燈亮,禁
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年安康紫陽縣園區(qū)發(fā)展有限公司招聘(2人)考試備考試題及答案解析
- 2026福建三明市大田縣總醫(yī)院招1人考試備考試題及答案解析
- 2026福建福州市道路運輸事業(yè)發(fā)展中心招聘1人考試備考試題及答案解析
- 2026重慶現(xiàn)代制造職業(yè)學(xué)院招聘考試參考題庫及答案解析
- 2026江蘇南京市棲霞區(qū)招聘教師32人考試備考題庫及答案解析
- 2026浙江臺州椒江區(qū)社會事業(yè)發(fā)展集團有限公司招聘工作人員8人考試備考試題及答案解析
- 2026重慶綦江區(qū)關(guān)壩鎮(zhèn)人民政府招聘20人考試參考試題及答案解析
- 北京市大興區(qū)教委面向社會招聘幼兒園勞務(wù)派遣人員7人考試參考試題及答案解析
- 2026咸陽彩虹學(xué)校教師招聘(6人)考試備考試題及答案解析
- 2026福建泉州市安溪縣司法局招聘4人考試參考試題及答案解析
- 2026年1月上海市春季高考數(shù)學(xué)試題卷(含答案)
- 高壓供電協(xié)議中的合同
- 2026年植物保護(植物檢疫)考題及答案
- 2025年長護險考試試題及答案
- 11837《行政法與行政訴訟法》國家開放大學(xué)期末題庫
- 高純水制取工創(chuàng)新應(yīng)用能力考核試卷含答案
- 四川省德陽市2026屆高三12月第一次診斷考試數(shù)學(xué)試卷(含答案)
- 重慶市(康德卷)2025-2026學(xué)年高三上學(xué)期高考模擬調(diào)研(二)(12月)數(shù)學(xué)試題+答案
- 《化工企業(yè)可燃液體常壓儲罐區(qū)安全管理規(guī)范》解讀課件
- 安全生產(chǎn)大整頓的個人反思材料
- 2025年自然資源行政執(zhí)法工作總結(jié)
評論
0/150
提交評論