姓名:* *組成員:* *
對MAX+PLUS II的應用和操作有壹定的了解和掌握。以下是我從壹些資料中學到的關於CPLD和電子CAD的壹些理論知識以及本次實驗報告的總結:
(1)MAX+plusⅱ是壹個完全集成的設計環境,與結構無關。設計師可以輕松地為Altera的各種CPLD系列設計、輸入、快速處理和編程器件。的。MAX+plusII開發系統處理能力強,靈活性高。其主要優點是:結構獨立、多平臺、豐富的設計庫、開放的接口、完全集成、支持多種硬件描述語言(HDL)等。設計流程數字化系統的設計采用自頂向下、由粗到細、逐步分解的設計方法。頂層電路是指整個系統需要在最底層實現特定的邏輯電路。設計輸入。Max+plus i1支持各種設計輸入公式,如原圖輸入、波形輸入、文本輸入及其混合輸入、設計管理、設計檢查等。設備編程。系統模擬。系統設計好之後,就要模擬現實。本系統采用MAX7000S系列CPLD芯片,各種文件要用M AX+加lI從底層到頂層逐壹編譯,然後進行邏輯仿真。仿真後通過MAX+ plus李編程器下載到可編程芯片,設計完成。
(2)在學習了CPLD和電子CAD課程後,在老師的幫助下,我們順利完成了五個基礎實驗和綜合實驗“數字鐘的設計”。
實驗報告分為七個部分:實驗1總結、實驗2總結、實驗3總結、實驗4總結、實驗5總結、綜合實驗總結、壹般學習體會。
實驗壹:3-8解碼器
壹、實驗的目的:
1.通過設計壹個簡單的3-8譯碼器,讓學生掌握組合邏輯電路的設計方法;
2.了解EPLD設計的全過程,掌握Altera軟件的使用;
3.掌握組合邏輯電路的靜態測試方法。
二、實驗內容:
利用MAX+plus II設計軟件實現3-8解碼器的設計,通過設計對軟件進行初步操作和理解。使用MAX+plus II在使用MAX+plus II編譯項目之前,必須將壹個設計確定為當前項目。應為每個新項目建立壹個單獨的子目錄。當指定了設計項目的名稱時,也指定了保存設計項目的子目錄的名稱。步驟如下:
1,指定設計項目名稱;
2.選擇設備;
3.創建新文檔。
設計輸入:
1.將設備放置在原理圖上;
2.將電線添加到設備的引腳;
3.保存邏輯示意圖。
設計項目的編譯:觀察適配結果和底部圖編輯器中引腳的重新分布和定位。編譯後可以模擬壹個項目,證明其功能是正確的。
三、實驗數據表:
1,電路圖
3-8解碼器
2、2、波形圖:
3.編譯成功:
四、實驗總結:
在驗證解碼器功能的同時,也對軟件有了進壹步的了解。剛開始有點不熟練,有點不適應。編譯後,畫出的波形是正確的,但當我下載到設備時出現了問題。雖然下載成功,但沒有在設備上顯示。經過反復檢查,終於發現是設備模式選擇錯誤。總的來說,這個實驗是成功的。
實驗二:組合電路
壹、實驗的目的:
1,掌握組合邏輯電路的設計方法;
2.加深對CPLD設計流程的理解,比較原理圖輸入和文本輸入的優缺點。
二、實驗內容:
1.設計壹個舍入判別電路,其輸入為8421BCD碼。當輸入大於5時,鑒別電路的輸出為1,反之亦然。
實驗電路:
2.設計壹個有四個開關的邏輯電路來控制壹個燈,要求閉合任意壹個開關,燈就會亮;關掉任何開關,燈就會熄滅。
3.按照以下排隊順序設計優先排隊電路:
A=1最高優先級
B=1倍高優先級
C=1最低優先級
要求輸出的壹端只能是“1”,即只有優先級較高的輸入端對應的輸出端才能是“1”。
AHDL設計輸入:
子設計t2_1
(d0,d1,d2,d3:輸入;
out:輸出;)
開始
IF( (d3,d2,d1,d0)>= 5)那麽
out = VCC;
其他
out = GND;
結束IF;
結束
三、實驗數據表:
1、
2、
3、
4、
四、實驗總結:
這個實驗可以用VHD語言實現。第二次,我們接觸到壹種新的語言,可以實現電路設計。對於壹個設計,首先要有想法,並在想法的指導下,利用壹定的媒介來實現自己的想法和創意,檢驗自己的設計。
實驗三觸發器的功能仿真
壹、實驗的目的:
1,掌握觸發函數的測試方法;
2.掌握基本RS觸發器的組成和工作原理;
3.掌握集成JK觸發器和D觸發器的邏輯功能和觸發方式。
二、實驗內容:
1.將基本的RS觸發器、J-K觸發器和D觸發器同時集成在壹塊CPLD芯片上,模擬它們的功能,並研究了相互轉換的方法。
2.對應於輸入信號Sd和Rd的引腳連接到按鍵開關,CLK連接到時鐘源(頻率
將實驗結果填入下表:
表1 RS觸發器:
NQ研發中心
0 1 0 1
1 0 1 0
1保持不變
0 0不確定
表3 JK觸發器:
J K Qn Qn+1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0
表4 D觸發器:
NQ CLK路110號
* * 1 0 1 0
* * 0 1 0 1
1 0——1 1 1 1 0
0 0——1 1 1 0 1
* 0 1 1 Q0 NQ0
三、實驗數據表:
四、實驗總結
實驗14計數器和時序電路
壹、實驗的目的:
1.了解時序電路的經典設計方法(由D觸發器和JK觸發器及通用邏輯門組成的時序邏輯電路);
2.了解通用同步計數器和異步計數器的用法;
3.了解利用同步計數器通過清零阻塞法和預顯數法得到循環任意計數器的方法;
4.了解時序電路與同步計數器加解碼電路的聯系,設計任意編碼計數器;
5.了解同步芯片和異步芯片的區別。
硬件要求:
主芯片Altera EPF 10K1004-4,時鐘,4位8段數碼管。
二、實驗內容:
d觸發器異步四位二進制加法計數器的設計:
實驗內容中的6個實驗要通過實驗13“掃描顯示電路”的內容來顯示。具體布線是在每個實驗內容完成時,根據管腳劃分和定義,連接相應的輸入輸出接口功能模塊。掃描模塊的連接參見實驗13。
三、實驗數據表:
四。實驗總結:
而且根據VHDL語言,妳可以設計任何二進制計數器。這
第二個實驗為數字鐘的設計奠定了基礎,即設計了24,60,100中的計數器。
實驗五:原理圖和PCB設計
壹、實驗的目的:
1.掌握PROTE199軟件的使用。
2.了解555組成的多諧振蕩器和555組成的單穩態觸發器。
2.實驗內容:
(1)設計電路原理圖,包括(加載元器件庫、放置和調整元器件位置、編輯元器件屬性、繪制原理圖)。
(2)電路圖的後處理,包括(檢查電路原理圖和修改電路原理圖)
(3)印刷電路板的設計
(4)生成各種電路原理圖報告文件(主要是網絡表文件)。
打開軟件protel99,新建壹個文件,將使用過的文件引入左側區域。工作區中由555組成的多諧振蕩器的電路圖。多諧振蕩器的工作原理如下:當電源接通時,電容C1通過R1和R2充電。當VC上的電壓升至2/3V1時,RS觸發器復位,輸出為0。同時內部放電晶體管開啟,C1通過R2和T(T(555)內部)放電。實驗電路圖如下:
三。實驗數據表:
四。實驗總結
對比初代,可以看出結果是正確的。
實驗六:數字鐘(綜合實驗)
壹、設計任務(數字鐘功能):
1.具有顯示時、分、秒和計數功能,以24小時為周期計時;
2.具有重置和調整小時和分鐘的功能;
3.具有整點報時功能,LED燈同時顯示圖案。
擴展:在基本功能上增加以下功能:秒表、倒計時、鬧鐘。
目的是掌握多位計數器連接的設計方法;掌握十進制、十六進制和十六進制計數器的設計方法;繼續鞏固多位掃描顯示數碼管的驅動和編碼;掌握音箱的驅動;LED燈的圖案顯示;掌握EPLD技術的層次化設計方法。
並且需要以下硬件條件:1,主芯片EPF 10k 10lc 84-4;
2、8個LED燈;
3、音箱;
4、8位八段掃描陰極數碼管;
5.三個按鍵開關(零點、小時和分鐘)
二、實施方案:
整個實驗分為以下電路模塊:
1.時鐘計數:秒-十六進制BCD碼計數:
分鐘-60 BCD碼計數:
時間-24 BCD碼計數:
模塊描述:
各種基數(10基數、6基數、24基數)的計數和時鐘控制模塊;
同時,計數器具有清零、調分、調時功能。它可以提供接近整數倍的時間信號。
2.它有片選驅動信號輸出和八段字體解碼輸出,用於驅動8位和8段負掃描數碼管。
3.具有時間調整功能,可以分別調整時間和分鐘,使其正確到標準時間。需要重新接通電源的時間或者行走時有誤差。通常校正時間的方法是:先切斷正常計數通道,然後手動觸發計數或將頻率較高的方波信號加到需要校正的計數單元的輸入端,再轉入正常計時狀態。
4.計時過程具有報時功能。當時間到達整點時,它將會蜂鳴10秒。
5.根據個人喜好,LED燈在整點時有圖案顯示信號。
三、實現設計流程:
第二個位計數單元是壹個10基數計數器,不需要基數轉換。我們用VHDL語言編程實現。
第二個十進制計數單元是十六進制計數器,需要進行十進制轉換。將10十進制計數器的程序稍加修改為6進制計數器。
分數位和分數小數計數單元的電路結構分別與分數位和分數小數計數單元的電路結構完全相同,除了分數位計數單元的Q3應該連接到分數小數計數單元的CPA作為上行進位信號,並且分數小數計數單元的Q2應該連接到時間小數計數單元的CPA作為上行進位信號。
小時位計數單元的電路結構仍與秒或小時位計數單元相同,但要求整個小時計數單元應為24位計數器,而不是10的整數倍,因此需要將小時位計數單元和十位計數單元合二為壹。
二進制轉換。
1十進制BCD碼計數器
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ signed . all;
實體c6是
port(clk,clr:in STD _ logic;
q:out STD _ logic _ vector(2 down to 0));
端C6;
c6的架構之壹是
信號計數:STD _ logic _ vector(2 down to 0);
開始
進程(時鐘、時鐘)
開始
如果clr='1 ',則
計數& lt="000";
elsif clk ' event and clk = ' 1 ' then
如果count="1001 ",則
計數& lt="000";
其他
計數& lt= count+1;
結束if;-為了計數
結束if;-對於clr
結束進程;
q & lt=計數;
結束;
2.二十四位BCD計數器:
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ arith . all;
使用IEEE . STD _ logic _ unsigned . all;
實體計數為
port( clk,clr,count _ en:in STD _ logic;
dout1,dout 2:out STD _ logic _ vector(3 down to 0);
car:out STD _ logic);= count 2+' 1 ';
結束if;
如果count2="0010 "且count1="0011 ",則
count2 & lt="0000";汽車& lt='1';
else car & lt='0';
結束if;
結束if;
結束if;
結束進程;
dout 1 & lt;= count 1;dout2 & lt= count2
結束;
3.六十進制計數器:
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ arith . all;
使用IEEE . STD _ logic _ unsigned . all;
實體c60是
port(clk,clr,count _ en:in STD _ logic;
dout1,dout 2:out STD _ logic _ vector(3 down to 0);
car:out STD _ logic);
末端c60
count 1 & lt;="0000";count2 & lt="0000";
elsif clk ' event and clk = ' 1 ' then
如果count_en='0 ',則
count 1 & lt;= count 1+' 1 ';
如果count1 ="1001 "則
count 1 & lt;="0000";count2 & lt= count 2+1;
結束if;
如果count2 ="0101 "並且count1 ="1001 ",則
count2 & lt="0000";汽車& lt='1';
else car & lt='0';
結束if;
結束if;
結束if;
結束進程;
dout 1 & lt;= count 1;dout2 & lt= count2
結束;
4、實現定時器功能的程序:
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ arith . all;
使用IEEE . STD _ logic _ unsigned . all;
實體比較器是
port(minu1,minu2,hour1,hour2,fen0,fen1,shi0,Shi 1:in STD _ logic _ vector(3 down to 0);
抱石:out STD _ logic);
結束;
畢角旗的建築rtl是
開始
進程(minu1,minu2,hour1,hour2,fen0,fen1,shi0,shi1)
開始
如果hour1=shi0,hour2=shi1,minu1=fen0,minu2=fen1,則
抱石& lt='1';
else抱石& lt='0';
結束if;
結束進程;
結束;
6、實現程序的計時功能:
圖書館ieee
使用IEEE . STD _ logic _ 1164 . all;
使用IEEE . STD _ logic _ arith . all;
使用IEEE . STD _ logic _ unsigned . all;
實體石鼎是
端口(小時,設置:在STD_LOGIC中;
hour0,hour 1:out STD _ logic _ vector(3 down to 0));
結束石鼎;
石鼎的建築rtl是
信號n:STD _ logic;
信號count3,count 4:STD _ logic _ vector(3 down to 0);
開始
流程(設置,小時,n)
開始
n & lt=小時和設置;
如果n '事件和n='1 '則
if count4 & gt="0010 "並且count3="0011 "然後
count4 & lt="0000";count3 & lt="0000";
else count3 & lt= count 3+1;
如果count3="1001 ",則
count4 & lt= count 4+1;
count3 & lt="0000";
結束if;
結束if;
結束if;
結束進程;
hour0 & lt= count3hour 1 & lt;= count4
結束;