EDA與電子技術(shù)課程設(shè)計_第1頁
EDA與電子技術(shù)課程設(shè)計_第2頁
EDA與電子技術(shù)課程設(shè)計_第3頁
EDA與電子技術(shù)課程設(shè)計_第4頁
EDA與電子技術(shù)課程設(shè)計_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rè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è)計,是目

2、前利 用EDA(Electronic Design Automation )技術(shù) 設(shè)計數(shù)字系統(tǒng)的潮流。 l這種設(shè)計方法以數(shù)字系統(tǒng)設(shè)計軟件為工具, 將傳統(tǒng)數(shù)字系統(tǒng)設(shè)計中的搭建調(diào)試用軟件仿 真取代,對計算機(jī)上建立的系統(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 C

3、ircuit ASIC) 為使ASIC的設(shè)計周期盡可能短, 出現(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 PLA l 70年代末:美國MMI公司Programmable array Logic P

4、AL l80年代中期:Altera公司Generic Array Logic GAL 共同特點(diǎn):低密度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 Dev

5、ice CPLD)。 共同特點(diǎn):高密度、高速度、低功耗結(jié)構(gòu)體系 更靈活、適用范圍更寬 ,設(shè)計風(fēng)險為零。 l90年代以后,高密度PLD在生產(chǎn)工藝、 器件的編程和測試技術(shù)等方面都有了飛 速發(fā)展,CPLD的集成度一般可達(dá)數(shù)千甚 至上萬門 。 Altera的EPF10K10每片含62000158000 個可使用門,重復(fù)擦寫次數(shù)達(dá)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等)

6、 ; 2仿真器(如Mentor公司的ModelSim, Cadence公司的Verilog-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

7、)VHDL語言 (Very High Speed Intergated Circuit Hardware Description Language) 2)Verilog HDL語言 設(shè)計輸入設(shè)計輸入 圖形或HDL語言 輸入 編譯編譯 Compiler 項目校驗、項目校驗、 仿真仿真 Simulate 編程或下載編程或下載 Program或 Configure l進(jìn)入Windows操作系統(tǒng),打開MAX+Plus2; l啟動FileProjectName 菜單,輸入設(shè)計文件的 名稱(給出文件存儲路徑); l點(diǎn)擊AssignDevice菜單,選擇器件 (EPM7128SLC84-6或EPF10K10

8、LC84-4); l啟動FileNew菜單,選擇Graphic Editor,打開 原理圖編輯器; l元器件放置; l在元器件之間添加連線; l添加輸入、輸出引腳,并給它們命名; l保存原理圖。 l啟動MaxplusII/Compiler菜單,選擇Start, 開始編譯; l若電路有錯,編譯器停止編譯,并顯示 出錯信息; l若電路無錯,則編譯通過,生 成.sof、.pof文件,以備硬件下載或編程 時用。 l注意:編譯只對頂層文件進(jìn)行注意:編譯只對頂層文件進(jìn)行 編譯通過后就可進(jìn)行時序模擬: 1、建立波形輸入文件: 1)打開菜單File/New,選Waveform Editor File(.scf

9、),OK; 2)在波形編輯器窗口的Name下單擊鼠標(biāo)右鍵,出現(xiàn)浮 動菜單,選Enter Nodes from SNF出現(xiàn)對話框; 3)在Type 區(qū)選Inputs和 Outputs,單擊 List按鈕,可在 其 右下方看到設(shè)計中的輸入輸出信號,單擊=可將這些 信號選到Selected Nodes 2.東南大學(xué)東訊通生產(chǎn)的DXT-BIII型EDA 實驗開發(fā)系統(tǒng), 芯片管腳與外圍信號已連 接好,必須根據(jù)下表改變管腳分配. 圖1-2-15 PLD引腳與外部人工連接 EPF10K10LC84-4 圖1-2-16 PLD引腳與外部器件連接鎖定 圖1216 PLD管腳與外部器件連接鎖定 器件名稱器件名稱信

10、號名信號名10K10管管 腳腳 器件名稱器件名稱信號名信號名10K10管管 腳腳 輸出發(fā)光管L12R25數(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ù)開

11、關(guān)K1553 數(shù)據(jù)開關(guān)K128數(shù)據(jù)開關(guān)K1654 器件名稱器件名稱信號名信號名10K10管管 腳腳 器件名稱器件名稱信號名信號名10K10管管 腳腳 數(shù)碼管 M4 M4A17揚(yáng)聲器SP27 M4B16時鐘信號CP11 M4C11時鐘信號CP243 M4D10 數(shù)碼管 M3 M3A9 M3B8 M3C7 M3D6 數(shù)碼管 M2 M2A5 M2B3 M2C83 M2D81 數(shù)碼管 M1 M1A80 M1B79 M1C78 M1D73 l將實驗板接口線與計算機(jī)并口連接,打 開試驗箱電源; l啟動MaxliusII/Programmer菜單; l如果是第一次使用該軟件,啟動Options Hardwa

12、re Setup菜單,在Hardware Type 中選擇 ByteBlaster(MV)。 l Configure即可完成下載。 l l若下載后提示下載不成功信息,按以上各步 檢查是否設(shè)置正確,并檢查計算機(jī)與實驗箱 硬件連接,排除故障,再次嘗試下載; l隨時可利用幫助信息(?),解決疑難問題; l相同名字的導(dǎo)線,在電氣上相連(P26); l器件可以旋轉(zhuǎn); l一組輸入或一組輸出時,可用BUS(組); l改變管腳后,應(yīng)再編譯一次,再下載。 l進(jìn)入Windows操作系統(tǒng),打開MAX+Plus2; l啟動FileProjectName 菜單,輸入設(shè)計文件的 名稱(給出文件存儲路徑); l點(diǎn)擊Assi

13、gnDevice菜單,選擇器件 (EPM7128SLC84-6或EPF10K10LC84-4); l啟動FileNew菜單,選擇Text Editor file,打開 原理圖編輯器; l鍵入程序; l在在FileSave as 保存,生成保存,生成.v文件;文件; l以下步驟同圖形輸入法。 有關(guān)Verilog HDL的詳細(xì)內(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/ DES

14、CRIPTION: An adder with two inputs (1 bit), one output (2 bits). l/*/ lmodule adder (in1, in2, sum); l l input in1,in2; l 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 end lendmodule 模塊名(必須和存儲 時的名稱相同) 端口列表 說明部分 模塊 主體 結(jié)束行 注釋部分 模塊定義行 事件控制的 Always語句, 一直

15、監(jiān)測輸入 信號,只要有 變化,就執(zhí)行 下面的塊語句。 Case語句 Case(敏感表達(dá)式) 值1:塊語句1; 值2:塊語句2; default:塊語句 n+1; endcase lmodule decoder(out,in); loutput7:0 out; linput2:0 in; lreg7:0 out; lalways(in) lbegin lcase(in) l3d0:out=8b00000001; l3d1:out=8b00000010; l3d2:out=8b00000100; l3d3:out=8b00001000; l3d4:out=8b00010000; l3d5:out=

16、8b00100000; l3d6:out=8b01000000; l3d7:out=8b10000000; lendcase lend lendmodule d 十進(jìn)制 h 十六進(jìn)制 b 二進(jìn)制 o 八進(jìn)制 lmodule jsq16(q,clk,reset); loutput3:0q; lreg 3:0q; linput clk,reset; lalways (posedge clk or negedge reset) lbegin lif(!reset) q3:0=4b0000; lelse lq3:0=q3:0+4b0001; lend lendmodule if(表達(dá)式) 塊語句1;

17、else 塊語句2; .v文件描述的功能模塊可以生成一個符 號,放在用戶庫中,供其它原理圖輸入 文件調(diào)用,調(diào)用的方法與從器件庫中取 元器件的方法相同。生成功能模塊的方 法為:選擇菜單filecreate default symbol, 經(jīng)過與編譯相同的過程后,生成的功能 模塊被放入用戶庫, l星期一上午講課,完成非門下載 先在先在F盤中設(shè)置一個自己的文件夾,例:盤中設(shè)置一個自己的文件夾,例:F lgl l星期一下午星期二:1.2、1.3所有練習(xí) l星期二下午4:00講課:掃描顯示電路 l星期三:完成1.4所有練習(xí) l星期三下午:布置數(shù)字系統(tǒng)設(shè)計題 l星期四星期五:完成數(shù)字系統(tǒng)設(shè)計一個 實驗室A

18、 l 用發(fā)光管的狀態(tài)驗證設(shè)計是否滿足要求。 在譯碼器設(shè)計時,這種方式是很直觀的, 但在計數(shù)器設(shè)計時,這樣的驗證方式就 顯得很不直觀,尤其當(dāng)計數(shù)器的位數(shù)增 加時(如百進(jìn)制計數(shù)),太多的發(fā)光管 將使結(jié)果的讀出非常困難。 lBCD碼驅(qū)動 l直接驅(qū)動 輸入輸出 D C B AYa Yb Yc Yd Ye Yf Yg字形 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0

19、 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 0 1 2 3 4 5 6 7 8 9 A b C d E F D C B A D C B A 圖1-2-16 PLD引腳與外部器件連接鎖定 東南 大學(xué) 實驗 箱的 靜態(tài) 顯示 方式

20、 屬于 BCD 碼驅(qū) 動 撥向“靜態(tài)” 輸入 a b c d e f g 輸出字形 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 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 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 0 1 2 3 4 5 6 7 8 9 A B C D E F 當(dāng)采

21、用直接驅(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) 掃 描 字 形 顯 示 十 六 進(jìn) 制 計 數(shù) module led(a,b,c,d,e,f,g

22、,D); output a,b,c,d,e,f,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,

23、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; endcase end endmodule module decoder(out,in); output7

24、:0 out; input2:0 in; reg7:0 out; always(in) begin case(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; endcase end endmodule lmodule saomiao(reset,clk,clk1,ms1,ms2,ms3,ms4, lms5,ms6,ms

25、7,ms8,a,b,c,d,e,f,g); linput clk,reset,clk1; lreg 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) lbegin lms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8=8b00000000; lflag=flag+1; lcase (flag) l0:begin temp=

26、in1;ms1=1;end l1:begin temp=in1;ms2=1;end l2:begin temp=in1;ms3=1;end l3:begin temp=in1;ms4=1;end l4:begin temp=in1;ms5=1;end l5:begin temp=in1;ms6=1;end l6:begin temp=in1;ms7=1;end l7:begin temp=in1;ms8=1;end lendcase lcase(temp) l4d0:a,b,c,d,e,f,g=7b1111110; l4d1:a,b,c,d,e,f,g=7b0110000; l4d2:a,b,

27、c,d,e,f,g=7b1101101; l4d3:a,b,c,d,e,f,g=7b1111001; l4d4:a,b,c,d,e,f,g=7b0110011; 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,

28、c,d,e,f,g=7b1001110; l4hD:a,b,c,d,e,f,g=7b0111101; l4hE:a,b,c,d,e,f,g=7b1001111; l4hF:a,b,c,d,e,f,g=7b1000111; ldefault:a,b,c,d,e,f,g=7b1111110; lendcase lend lalways(posedge clk1) lbegin if(!reset) in1=4b0000; l else begin in1=in1+1; lend lend lendmodule 東南大學(xué)實驗箱 完全用Verilog HDL完成 問題是要把兩個計數(shù)器輸出的個位和十位數(shù)

29、分別顯示在 不同的數(shù)碼管上,用Sel模塊實現(xiàn)。 原理是:in1,in2in8為八個數(shù)碼管的BCD碼輸入端數(shù)據(jù), MS1有效時,in1的數(shù)據(jù)送MS1顯示; MS2有效時,in2的數(shù)據(jù)送MS2顯示; MS8有效時,in8的數(shù)據(jù)送MS8顯示。 八組數(shù)據(jù)可以不全部都有,如此例中,十二進(jìn)制數(shù)的低四位 送in1,高四位送in2,六十進(jìn)制數(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;

30、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,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g; lreg 3:0 temp,flag; lalways(posedge clk) lbegin lms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8=8b00000 000; lflag=flag+1; lcase (flag) l0:begin temp=in1;ms1=1;end

31、l1:begin temp=in2;ms2=1;end l2:begin temp=in3;ms3=1;end l3:begin temp=in4;ms4=1;end l4:begin temp=in5;ms5=1;end l5:begin temp=in6;ms6=1;end l6:begin temp=in7;ms7=1;end l7:begin temp=in8;ms8=1;end lendcase 實驗室B l 用發(fā)光管的狀態(tài)驗證設(shè)計是否滿足要求。 在譯碼器設(shè)計時,這種方式是很直觀的, 但在計數(shù)器設(shè)計時,這樣的驗證方式就 顯得很不直觀,尤其當(dāng)計數(shù)器的位數(shù)增 加時(如百進(jìn)制計數(shù)),太多的

32、發(fā)光管 將使結(jié)果的讀出非常困難。 lBCD碼驅(qū)動 l直接驅(qū)動 輸入輸出 D C B AYa Yb Yc Yd Ye Yf Yg字形 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0

33、0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 0 1 2 3 4 5 6 7 8 9 A b C d E F D C B A D C B A 輸入 a b c d e f g 輸出字形 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0

34、1 1 1 1 1 1 1 1 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 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 0 1 2 3 4 5 6 7 8 9 A B C D E F 當(dāng)采用直接驅(qū)動方式時,驅(qū)動一個數(shù)碼管 需要七個電平信號,如果系統(tǒng)用來顯示結(jié)果 的數(shù)碼管較多,應(yīng)考慮數(shù)字系統(tǒng)輸出信號占 用PLD芯片管腳的問題,因為PLD芯片的管 腳總數(shù)是有限的,例如F10K10,它的管腳 總數(shù)是84,其中還有一些特定功能的管腳不 能給用戶使用,能使用的管腳不到60個,所 以直接驅(qū)動時,必須設(shè)法

35、減少占用PLD芯片 的管腳的數(shù)量。 解決的方法是采用動態(tài)掃描顯示 l北理工生產(chǎn)的實驗箱,只能用動態(tài)掃描方式進(jìn)行 數(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,e,f,g; always (D) begin case(D) 4d0:a,b,c,d,e,f,g=7b1111110;

36、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,c,d,e,f,g=7b1111011; 4hA:a,b,c,d,e,f,g=7b1110111; 4hB:a,b,c,

37、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 endmodule 譯碼器 北京理工實驗箱 module saomiaob(reset,clk,clk1,flag,a,b,c,d,e,f,g); input clk,reset,clk1; reg 3:0 in1; output flag,a,b,c,d,e,f,g; reg a,b,c,d,e,f,g

38、; reg2:0 flag; always(posedge clk) begin flag=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=7b1011111; 4d7:a,b,c,d,e,f,g=7b1110000; 4d8:

39、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; endcase end always(posedge clk1) begin if(!reset) in1=4b0000; else begin

40、 in1=in1+1; end end endmodule 完全用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ù)可以不全部都有,如此例中,十二進(jìn)制數(shù)的低四位 送in1,高四位送in2,六十進(jìn)制數(shù)的低四位送in3,高四位送in4, 其余數(shù)據(jù)端為空。 北

41、京理工實驗箱 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) begin flag=flag+1; case (flag) 0:begin temp=in1;end 1:begin temp=in2

42、;end 2:begin temp=in3;end 3:begin temp=in4;end 4:begin temp=in5;end 5:begin temp=in6;end 6:begin temp=in7;end 7:begin temp=in8;end endcase case(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

43、,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,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

44、,f,g=7b1000111; */ default:a,b,c,d,e,f,g=7bzzzzzzz; endcase end endmodule l設(shè)計一個能進(jìn)行時、分、秒計時的十二 小時制或二十四小時制的數(shù)字鐘,并具 有定時與鬧鐘功能,能在設(shè)定的時間發(fā) 出鬧鈴音,能非常方便地對小時、分鐘 和秒進(jìn)行手動調(diào)節(jié)以校準(zhǔn)時間,每逢整 點(diǎ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時,在手動校對時

45、,選擇調(diào)整小時部分。 Change:在手動校時或鬧鐘設(shè)置模式下,每按一次,計數(shù)器加1。 Reset:reset=0時,整個系統(tǒng)復(fù)位; reset=1時,系統(tǒng)計時或其它特殊功能操作。 Reset1:reset1=0時,關(guān)閉鬧鈴信號; reset1=1時,可對鬧鈴進(jìn)行設(shè)置。 狀態(tài)顯示信號(發(fā)光管): LD_alert:指示是否設(shè)置了鬧鈴功能; LD_h:指示當(dāng)前調(diào)整的是小時信號; LD_m:指示當(dāng)前調(diào)整的是分鐘信號。 l設(shè)計一個能進(jìn)行拔河游戲的電路。 l電路使用15個(或9個)發(fā)光二極管表示拔河的“電子 繩”,開機(jī)后只有中間一個發(fā)亮,此即拔河的中心點(diǎn)。 l游戲雙方各持一個按鈕,迅速地、不斷地按動,

46、產(chǎn)生 脈沖,誰按得快,亮點(diǎn)就向誰的方向移動,每按一次, 亮點(diǎn)移動一次。 l亮點(diǎn)移到任一方終端二極管時,這一方就獲勝,此時 雙方按鈕均無作用,輸出保持,只有復(fù)位后才使亮點(diǎn) 恢復(fù)到中心。 l由裁判下達(dá)比賽開始命令后,甲乙雙方才能輸入信號, 否則,輸入信號無效。 l用數(shù)碼管顯示獲勝者的盤數(shù),每次比賽結(jié)束自動給獲 勝方加分。 l加/減計數(shù)器 l譯碼器 l得分計數(shù)顯示電路 設(shè)計一個可容納四組參賽的數(shù)字式搶答器,每組設(shè)一個 按鈕供搶答使用。搶答器具有第一信號鑒別和鎖存功能, 使除第一搶答者外的按鈕不起作用;設(shè)置一個主持人 “復(fù)位”按鈕,主持人復(fù)位后,開始搶答,第一信號鑒 別鎖存電路得到信號后,用指示燈顯示

47、搶答組別,揚(yáng)聲 器發(fā)出秒的音響。 *設(shè)置犯規(guī)電路,對提前搶答和超時答題(例如3分鐘) 的組別鳴笛示警,并由組別顯示電路顯示出犯規(guī)組別。 設(shè)置一個計分電路,每組開始預(yù)置分,由主持人 記分,答對一次加分,答錯一次減分。 l鑒別鎖存模塊 l答題計時模塊 l計分電路模塊 l掃描顯示模塊 l1此模塊的關(guān)鍵是準(zhǔn)確判斷出第一搶答者 并將其鎖存,實現(xiàn)的方法可使用觸發(fā)器或 鎖存器,在得到第一信號后將輸入封鎖, 使其它組的搶答信號無效。 l2形成第一搶答信號后,用編碼、譯碼及 數(shù)碼顯示電路顯示第一搶答者的組別,控 制揚(yáng)聲器發(fā)出音響,并啟動答題計時電路。 鑒別鎖存模塊 l設(shè)計一個洗衣機(jī)洗滌程序控制器,控制洗衣機(jī) 的

48、電機(jī)作如下規(guī)律運(yùn)轉(zhuǎn): l用兩位數(shù)碼管預(yù)置洗滌時間(分鐘數(shù)),洗滌 過程在送入預(yù)置時間后開始運(yùn)轉(zhuǎn),洗滌中按倒 計時方式對洗滌過程作計時顯示,用LED表示 電機(jī)的正、反轉(zhuǎn),如果定時時間到,則停機(jī)并 發(fā)出音響信號。 l洗滌預(yù)置時間編碼模塊 l減法計數(shù)顯示 l時序電路 l譯碼驅(qū)動模塊 l1設(shè)計一個能測量方波信號頻率的頻率計,測量結(jié)果 用十進(jìn)制數(shù)顯示。 l2.測量的頻率范圍是110KHz,分成兩個頻段,即 1999Hz,1KHz10KHz,用三位數(shù)碼管顯示測量頻率, 用LED顯示表示單位,如亮綠燈表示Hz,亮紅燈表示 KHz。 3.具有自動校驗和測量兩種功能,即能用標(biāo)準(zhǔn)時鐘校驗測 量精度。 4.具有超量

49、程報警功能,在超出目前量程檔的測量范圍時, 發(fā)出燈光和音響信號。 l脈沖信號的頻率就是在單位時間內(nèi)所產(chǎn)生的脈沖個數(shù),其表達(dá)式 為f=N/T,f為被測信號的頻率,N為計數(shù)器所累計的脈沖個數(shù),T 為產(chǎn)生N個脈沖所需的時間。所以,在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。 校驗與測量共用一個電路,

50、只是被測信號CP1不同而已。 l設(shè)置1秒定時信號(周期為2秒),在1秒定時 時間內(nèi)的所有被測信號送計數(shù)器輸入端。 l計數(shù)器對CP1信號進(jìn)行計數(shù),在1秒定時結(jié)束 后,將計數(shù)器結(jié)果送鎖存器鎖存,同時將計 數(shù)器清零,為下一次采樣測量做好準(zhǔn)備。 l設(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ù) 器由四級十進(jìn)制計數(shù)構(gòu)成(帶進(jìn)位C)。若被 測信號頻率

51、小于1KHz(K=0),則計數(shù)器只進(jìn) 行三級十進(jìn)制計數(shù),最大顯示值為999.Hz,如 果被測信號頻率超過此范圍,示警信號驅(qū)動燈 光、揚(yáng)聲器報警;若被測信號為1KHz10KHz (K=1),計數(shù)器進(jìn)行四位十進(jìn)制計數(shù),取高 三位顯示,最大顯示值為9.99KHz,如果被測 信號頻率超過此范圍,報警。 左第一位 左第一位 l設(shè)計一個電子密碼鎖,在鎖開的狀態(tài)下輸入密碼,密碼 共4位,用數(shù)據(jù)開關(guān)K1K10分別代表數(shù)字1、2、9、 0,輸入的密碼用數(shù)碼管顯示,最后輸入的密碼顯示在最 右邊的數(shù)碼管上,即每輸入一位數(shù),密碼在數(shù)碼管上的 顯示左移一位??蓜h除輸入的數(shù)字,刪除的是最后輸入 的數(shù)字,每刪除一位,密碼在

52、數(shù)碼管的顯示右移一位, 并在左邊空出的位上補(bǔ)充“0”。用一位輸出電平的狀態(tài) 代表鎖的開閉狀態(tài)。為保證密碼鎖主人能打開密碼鎖, 設(shè)置一個萬能密碼,在主人忘記密碼時使用。 l密碼輸入刪除控制模塊 l寄存模塊 l比較模塊 l掃描顯示 模塊 設(shè)計一個具有7位顯示的電話按鍵顯示器, 顯示器應(yīng)能正確反映按鍵數(shù)字,顯示器 顯示從低位向高位前移,逐位顯示按鍵 數(shù)字,最低位為當(dāng)前顯示位,七位數(shù)字 輸入完畢后,電話接通,揚(yáng)聲器發(fā)出 “嘟嘟”接通聲響,直到有接聽信 號輸入,若一直沒有接聽,10秒鐘后, 自動掛斷,顯示器清除顯示,揚(yáng)聲器停 止,直到有新號碼輸入。 l號碼輸入顯示控制模塊 l主控制模塊 l掃描顯示模塊

53、l設(shè)計一個由甲、乙雙方參賽,有裁判的3人乒乓球游戲機(jī)。 l用8個(或更多個)LED排成一條直線,以中點(diǎn)為界,兩邊各代表參 賽雙方的位置,其中一只點(diǎn)亮的LED指示球的當(dāng)前位置,點(diǎn)亮的 LED依此從左到右,或從右到左,其移動的速度應(yīng)能調(diào)節(jié)。 l當(dāng)“球”(點(diǎn)亮的那只LED)運(yùn)動到某方的最后一位時,參賽者應(yīng) 能果斷地按下位于自己一方的按鈕開關(guān),即表示啟動球拍擊球。 若擊中,則球向相反方向移動;若未擊中,則對方得1分。 l一方得分時,電路自動響鈴3秒,這期間發(fā)球無效,等鈴聲停止后 方能繼續(xù)比賽。 l設(shè)置自動記分電路,甲、乙雙方各用2位數(shù)碼管進(jìn)行記分顯示,每 計滿21分為1局。 l甲、乙雙方各設(shè)一個發(fā)光二

54、極管,表示擁有發(fā)球權(quán),每隔5次自動 交換發(fā)球權(quán),擁有發(fā)球權(quán)的一方發(fā)球才有效。 l用雙向移位寄存器的輸出端控制LED顯示來模擬乒乓 球運(yùn)動的軌跡,先點(diǎn)亮位于某一方的第1個LED,由擊 球者通過按鈕輸入開關(guān)信號,實現(xiàn)移位方向的控制。 l也可用計數(shù)譯碼方式實現(xiàn)乒乓球運(yùn)動軌跡的模擬,如 利用加/減計數(shù)器的2個時鐘信號實現(xiàn)甲、乙雙方的擊 球,由表示球拍的按鈕產(chǎn)生計數(shù)時鐘,計數(shù)器的輸出 狀態(tài)經(jīng)譯碼驅(qū)動LED發(fā)亮。 l任何時刻都保持一個LED發(fā)亮,若發(fā)亮的LED運(yùn)動到 對方的終點(diǎn),但對方未能及時輸入信號使其向相反方 向移動,即失去1分。 l控制電路決定整個系統(tǒng)的協(xié)調(diào)動作,必須嚴(yán)格掌握各 信號之間的關(guān)系。 l

55、設(shè)計一個交通信號燈控制器,由一條主干道和一條支干道匯合成 十字路口,在每個入口處設(shè)置紅、綠、黃三色信號燈,紅燈亮禁 止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時間停在 禁行線外。 l用紅、綠、黃發(fā)光二極管作信號燈,用傳感器或邏輯開關(guān)作檢測 車輛是否到來的信號。 l主干道處于常允許通行的狀態(tài),支干道有車來時才允許通行。主 干道亮綠燈時,支干道亮紅燈;支干道亮綠燈時,主干道亮紅燈。 l主、支干道均有車時,兩者交替允許通行,主干道每次放行45秒, 支干道每次放行25秒,設(shè)立45秒、25秒計時、顯示電路。 l在每次由綠燈亮到紅燈亮的轉(zhuǎn)換過程中,要亮5秒黃燈作為過渡, 使行駛中的車輛有時間停到禁行

56、線外,設(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 綠燈亮,允許通行 紅燈亮,禁止通行 45秒 l1 黃燈亮,停車 紅燈亮,禁止通行 5秒 l2 紅燈亮,禁止通行 綠燈亮,允許通行 25秒 l3 紅燈

溫馨提示

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

最新文檔

評論

0/150

提交評論