⑴ 一個按鍵怎麼控制數碼管顯示不同的字元
這個要加程序的,按一下按鍵,程序中變數自加1,然後根據程序變數的值,顯示相應的字元。例如:1 MP3 2 CD 3 DVD,如果當前變數值為3,下一次按鍵有效時,應直接賦值為1,這樣就形成了循環
⑵ EDA課程設計:彩燈控制器
以前做的設計,粘貼時圖形沒出來,參考一下,記得給分啊
一.設計目的
1、學習EDA開發軟體和MAX+plus Ⅱ的使用方法,熟悉可編程邏輯器件的使用,通過製作來了解彩燈控制系統。
2、進一步掌握數字電路課程所學的知識。
3、了解數字電路設計的一般思路,進一步解決和分析問題。
4、培養自己的編程和謹慎的學習態度
二、.設計題目內容和要求
(1)課題內容:
用EDA技術設計一個彩燈控制器,使彩燈(LED管)能連續發出三種以上不同的花型(自擬);
隨著彩燈顯示圖案的變化,發出不同的音響聲。
要求使用7段數碼管顯示當前顯示的花型,如第一種花型顯示A1,第二種花型顯示b2,第三種花型顯示C3
(2)主要任務:完成該系統的硬體和軟體的設計,並利用實驗箱製作出實物演示,調試好後並能實際運用(指導教師提供製作所需的器件),最後就課程設計本身提交一篇課程設計報告。
三、總體方案設計與選擇
1 總體方案的設計
方案一:電路分為三個部分:彩燈花型模塊、聲音模塊,時鍾模塊。用時鍾控制聲音和花型,整體使用相同的變數與信號,主體框圖如下;
圖三—1-1方案一的的流程圖
方案二:電路分為五個模塊:分頻器模塊、16進制計數器、4進制計數器,4選1選擇器、彩燈控制器。其中彩燈控制器是用來輸出不同的花樣,彩燈控制器的輸出則是用一個16進制的計數器來控制,揚聲器的輸出時用不同的頻率來控制,所以用了一個集成分頻器來使輸入的頻率被分為幾種不同的頻率,不同頻率的選擇性的輸出則是用一個4選一的選擇器來控制。整體框圖如下:
圖三—1-2方案二的流程圖
2、方案的選擇
方案一是將融合在一起,原理思路簡單,元件種類使用少,但是在編程時要使用同一變數和信號,這樣就會給編程帶來很大的困難,另外中間單元連線較多,不容易檢查,門電路使用較多,電路的抗干擾能力會下降。
方案二將彩燈花型控制與聲音控制分開,各單元電路只實現一種功能,電路設計模塊化,且編程時將工作量分開,出現錯誤時較容易檢查,連線較少且容易組裝和調試。
結合兩個方案的優缺點,我選擇容易編程、組裝和調試的方案二。
四、模塊電路的設計
1、分頻器模塊
設計要求顯示不同的彩燈的時候要伴隨不同的音樂,所以設計分頻器來用不同的頻率控制不同的音樂輸出。
模塊說明:
Rst:輸入信號 復位信號 用來復位分頻器的輸出使輸出為「0」,及沒有音樂輸出。
Clk:輸入信號 模塊的功能即為分頻輸入的頻率信號。
Clk_4、clk8、clk_12、clk_16:輸出信號 即為分頻模塊對輸入信號clk的分頻,分別為1/4分頻輸出、1/8分頻輸出、1/12分頻輸出、1/16分頻輸出。不同的頻率會發出不同的聲音。如圖
圖四-1分頻器電路圖
2、16進制計數器
16進制模塊用來控制彩燈輸出模塊,即確定彩燈控制器的不同的輸出。
Rst:輸入信號 復位信號 用來復位16進制使其輸出為「00000」,即彩燈不亮。
Clk1:輸入信號 用來給模塊提供工作頻率。
Count_out[3..0]:輸出信號 即為16進制計數器的輸出,此輸出信號作為彩燈的輸入信號。
如圖四-2
圖四-2 16進制計數器電路圖
3、4進制計數器模塊
4進制計數器作為選擇器的輸入來控制選擇器選擇不同的頻率作為輸出控制揚聲器工作。
Clk2:輸入信號 來為計數器提供工作頻率。
Rst:輸入信號 復位信號 使計數器的輸出為「00」。
如圖四-3
圖四-3 4進制計數器電路圖
4、4選1選擇器模塊
Rst:輸入信號復位信號使選擇器的輸出為「0」。
In1、in2、in3、in4:輸入信號接分頻器的輸出。
Inp[1..0]:輸入信號接4進制計數器的輸出用來控制選擇器的選擇不同的輸入選擇不同的輸出。
Output2:輸出信號直接接揚聲器即輸出的是不同的頻率來控制揚聲器播放聲音
如圖四—4
圖四—4 4選1選擇器電路圖
5、彩燈控制模塊
彩燈控制採用的模式6來進行顯示。
圖四—5—1模式6結構圖
彩燈控制模塊用來直接控制彩燈的輸出,使彩燈表現出不同的花樣。
Rst:輸入信號 使彩燈控制模塊的輸出為「00000000」,即讓彩燈無輸出。
Input[4..0]:輸入信號 不同的輸入使彩燈控制模塊有不同的輸出即彩燈顯示出不同的花樣。
Output3[7..0]:輸出信號 直接與數碼管相連來控制數碼管。
如圖四—5—2
圖四-5-2 彩燈控制電路圖
五、EDA設計與模擬
1、源程序:
----------------------------------------------分頻器模塊-----------------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYfenpinqi IS
PORT
(
clk2,rst :IN std_logic;
clk_12,clk_4,clk_16,clk_8 : OUT std_logic
);
ENDfenpinqi;
ARCHITECTUREcd OF fenpinqi IS
begin
p1:process(clk2,rst)
variable a:integer range 0 to 20;
begin
if rst='1' then
clk_4<='0'; ----- 復位信號控制部分
else
if clk2'event and clk2='1'then
if a>=3 then
a:=0;
clk_4<='1';
else
a:=a+1;
clk_4<='0';
end if;
end if;
end if;
endprocess p1;
p2:process(clk2,rst)
variable b:integer range 0 to 20;
begin
if rst='1' then
clk_16<='0'; ----- 復位信號控制部分
else
if clk2'event and clk2='1'then
if b>=15 then
b:=0;
clk_16<='1';
else
b:=b+1;
clk_16<='0';
end if;
end if;
end if;
endprocess p2;
p3:process(clk2,rst)
variable c:integer range 0 to 20;
begin
if rst='1' then
clk_8<='0'; ----- 復位信號控制部分
else
if clk2'event and clk2='1'then
if c>=7 then
c:=0;
clk_8<='1';
else
c:=c+1;
clk_8<='0';
end if;
end if;
end if;
endprocess p3;
p4:process(clk2,rst)
variable d:integer range 0 to 40;
begin
if rst='1' then
clk_12<='0'; ----- 復位信號控制部分
else
if clk2'event and clk2='1'then
if d>=11 then
d:=0;
clk_12<='1';
else
d:=d+1;
clk_12<='0';
end if;
end if;
end if;
endprocess p4;
endcd;
----------------------------------------------4選1選擇器---------------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYxzq4_1 IS
PORT
(
rst:in std_logic;
inp:in integer range 0 to 3;
in1,in2,in3,in4 : In std_logic;
output2 :OUT std_logic
);
ENDxzq4_1;
ARCHITECTUREa OF xzq4_1 IS
BEGIN
PROCESS (rst,inp)
BEGIN
if(rst='1') then output2<='0';
else
case inp is
when 0=>output2<=in1;
when 1=>output2<=in2;
when 2=>output2<=in3;
when 3=>output2<=in4;
when others=>null;
end case;
end if;
END PROCESS;
ENDa;
-------------------------------------------彩燈控制模塊----------------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYcaideng IS
PORT
(
input :
IN INTEGER RANGE
0 TO 15;
rst:in std_logic;
output3 :OUT std_logic_vector(7 downto 0);
sm :out std_logic_vector(6 downto 0)
);
ENDcaideng;
ARCHITECTUREa OF caideng IS
BEGIN
PROCESS (input)
BEGIN
if rst='1' thenoutput3<="00000000";sm<="0000000";
else
case input is
when 0=>output3<="00111000";sm<="0000110";
when1=>output3<="00001111";sm<="0000110";
when2=>output3<="00111110";sm<="0000110";
when3=>output3<="01111111";sm<="0000110";
when4=>output3<="01011011";sm<="1011011";
when5=>output3<="01110110";sm<="1011011";
when6=>output3<="00001111";sm<="1011011";
when7=>output3<="01111111";sm<="1011011";
when8=>output3<="01101101";sm<="1001111";
when9=>output3<="00000111";sm<="1001111";
when10=>output3<="01110111";sm<="1001111";
when11=>output3<="01111011";sm<="1001111";
when12=>output3<="00111000";sm<="1100110";
when13=>output3<="00111111";sm<="1100110";
when14=>output3<="00111110";sm<="1100110";
when 15=>output3<="01111001";sm<="1100110";
when others=>null;
end case;
end if;
end process;
end a;
--------------------------------------------16進制計數器模塊-----------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYcounter_16 IS
PORT
(
clk,rst :IN std_logic;
count_out :
OUT INTEGER RANGE
0 TO 15);
ENDcounter_16;
ARCHITECTUREa OF counter_16 IS
BEGIN
PROCESS (rst,clk)
variable temp:integer range 0 to 16;
BEGIN
IF rst='1' THEN
temp:=0;
ELSIF (clk'event and clk='1') THEN
temp:=temp+1;
if(temp=15) then
temp:=0;
end if;
END IF;
count_out<=temp;
END PROCESS;
ENDa;
-------------------------------4進制計數器模塊----------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYcounter_4 IS
PORT
(
clk,rst :IN std_logic;
count_out :OUT integer range 0 to 3 );
ENDcounter_4;
ARCHITECTUREa OF counter_4 IS
BEGIN
PROCESS (rst,clk)
variable temp:integer range 0 to 16;
BEGIN
IF rst='1' THEN
temp:=0;
ELSIF (clk'event and clk='1') THEN
temp:=temp+1;
if(temp=4) then
temp:=0;
end if;
END IF;
count_out<=temp;
END PROCESS;
ENDa;
-------------------------------------------主程序----------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYproject IS
PORT (clk1,rst,clk2: IN std_logic;
Out1: OUT std_logic_vector(7 downto 0);
Out2 :out std_logic_vector(6 downto0);
Out3: OUT std_logic);
ENDproject;
ARCHITECTUREstruct OF project IS
COMPONENT counter_16 IS
PORT(clk,rst : IN std_logic;
count_out : OUT integer range 0 to 15 );
ENDCOMPONENT;
COMPONENT fenpinqi IS
PORT(clk2,rst : IN std_logic;
clk_12,clk_4,clk_16,clk_8 : OUT std_logic);
END COMPONENT ;
COMPONENT counter_4 IS
PORT(clk,rst :IN std_logic;
count_out :OUT integer range 0 to 3 );
ENDCOMPONENT;
COMPONENT xzq4_1 IS
PORT
(
rst:in std_logic;
inp:in integer range 0 to 3;
in1,in2,in3,in4 : In std_logic;
output2 :OUT std_logic
);
ENDCOMPONENT;
COMPONENT caideng IS
PORT
(
input: IN INTEGER RANGE 0 TO 15;
rst:in std_logic;
output3 :OUT std_logic_vector(7 downto 0);
sm :out std_logic_vector(6 downto 0)
);
ENDCOMPONENT;
SIGNALu: integer range 0 to 15;
SIGNALw: integer range 0 to 3;
SIGNALv1,v2,v3,v4: std_logic;
BEGIN
U1:counter_16PORT MAP(clk1,rst,u);
U2:fenpinqiPORT MAP(clk2,rst, v1,v2,v3,v4);
U3:counter_4PORT MAP(v3,rst,w);
U4:xzq4_1 PORT MAP(rst,w, v1,v2,v3,v4,out3);
U5:caidengPORT MAP(u,rst,out1,out2);
ENDstruct;
2、彩燈控制器模擬結果及數據分析
分析:如上圖,clk1控制的是彩燈模塊,clk2控制的是聲音模塊,當rst為高電平是輸出全為0,ck1每出現四個高電平,花型發生一次變化,out2分別顯示1、2、3、4,out1顯示不同的花型,out3發出聲音,如圖脈沖數不同表示發出的聲音不同,但是聲音與花型相比有一定的延遲。
六、硬體實現
1、引腳鎖定圖
2、硬體模擬圖
顯示第一組花型之一
顯示第二組花型之一
顯示第三組花型之一
顯示的第四組花型之一
七、總體電路
整個系統就是各個分模塊組成來實現最後的彩燈控制功能,系統又兩個時鍾來控制一個是控制16進制計數器即控制彩燈控制模塊來實現彩燈的不同輸出,另一個時鍾為分頻器的輸入來進行分頻處理,最後用來控制揚聲器發出不同的音樂,為了使效果明顯盡量達到要求分頻處理的時鍾的頻率比實現彩燈控制的時鍾頻率要高。
將各個模塊連在一起採用在課程中學到的元件例化,將各個模塊的引腳連在一起,使之成為一個整體。元件例化是VHDL設計實體構自上而下層次化設計的重要途徑。整體電路如圖五—1
圖七—1 整體電路圖
八、心得體會
1、在設計時遇到一些主要問題如下:怎麼將各個模塊連在一起、開始硬體模擬時總是出現錯誤,設計方案的選擇。最後我選擇了元件例化將各個模塊連在一起,模擬時是因為短路帽接錯了,當時沒有注意,在方案的選擇時我們選了實現比較簡單的分模塊方案
2、這次的EDA課程設計我學到得東西很多明白了理論與實踐之間的差距,而且對DEA課程有了更深入的理解,尤其是知道了怎麼去應用所學的知識,怎麼去利用網路實現自己的要求,具體體會如下:
(1)要想完成編程就要對DEA知識很熟悉,這樣才能加快編程的速度,另外在編程時一定要小心,稍微有一點粗心都會有很多的錯誤出現,在出現錯誤後要學會尋找錯誤原因如名稱前後不一、數據類型不同、符號寫錯等等
(2)拿道題目後要注意分析,要學會總體把握,然後再一一一細化、學會將復雜的問題簡單化,分析時一定要有一個明確的目標。
(3)要學會理論聯系實際,在程序導入到實驗箱後,居然不顯示結果,認真的檢查看看操作是否有錯誤、試驗箱中該短路的是否已用短路帽短路、又重新檢查了一下程序,結果發現是短路帽接錯了,所以看似很簡單的操作自己操作起來可能會有很大的漏洞,所以親自動手是很重要的。
(4)當自己的只是有限時,要注意運用網路等一切資源,要學會知識的靈活運用在查閱的過程中學到了很多在書本所沒有學到的知識,通過查閱相關資料進一步加深了對EDA的了解
總的來說,通過這次課程設計不僅鍛煉了我們的動手和動腦能力,也使我懂得了理論與實際相結合的重要性,只有理論知識是遠遠不夠的,要把所學的理論知識與實踐相結合起來,才能提高自己的實際動手能力和獨立思考的能力。還有最重要的一點就是要有一絲不苟的精神和端正認真的態度,遇到困難後要學會積極的面對。
3、在此設計中聲音會有一定的延遲,可以考慮用花型輸出信號作為4選1的控制信號
九、參考書目:
趙偉軍,《Protel99se教程》,北京,人民郵電出版社,1996年
金西,《VHDL與復雜數字系統設計》,西安,西安電子科技大學出版社,2003
漢澤西,《EDA技術及其應用》,北京,北京航空航天大學出版社,2004
[4] 黃任,《VHDL入門.解惑.經典實例.經驗總結》,北京,北京航空航天大學出版社,2005
[5] 李洋,《EDA技術 使用教程》,北京,機械工業出版社,2009
[6] 網路資源:EDA課程設計、EDA課程設計—彩燈控制器等
⑶ 求EDA技術實用教程(潘松第三版)箜篌習題答案,在線等
本書以掌握國內外最流行的電子設計自動化(EDA)技術為教學目標,以
培養學生的設計和應用開發能力為主線,系統地介紹EDA應用技術。
全書在取材和編排上,內容新穎、循序漸進,並注重理論聯系實際。全
書共10章,主要內容包括VHDL硬體描述語言、Quartus Ⅱ等EDA工具軟體、
可編程邏輯器件、實驗開發系統、應用實例和綜合設計實例。第4章對大量
常規的數字電路做出了VHDL描述,第7章詳細闡述了9個典型數字系統的設計
方法,第9章選取了16個實驗實例,第10章給出了4個代表性的全國大學生電
子設計競賽賽題設計實例。讀者完全可以通過這些實際操作,很好地掌握:
EDA的開發設計方法。每章後面附有小結和習題,便於讀者學習和教學使用
。為方便教師教學,本書配有電子教案。
本書可作為高職高專及本科院校電子信息、電氣、通信、自動控制、自
動化和計算機類專業的EDA技術教材,也可作為上述學科或相關學科工程技
術人員的參考書。還可作為電子產品製作、科技創新實踐、EDA課程設計和
畢業設計等實踐活動的指導書。
【本書目錄】
第1章 EDA技術概述
1.1 EDA技術及其發展
1.1.1 EDA技術的涵義
1.1.2 EDA技術的發展史
1.2 EDA設計流程
1.3 EDA技術的主要內容及主要的EDA廠商
1.3.1 EDA技術的主要內容
1.3.2 主要EDA廠商概述
1.4 常用的EDA工具
1.5 EDA技術的發展趨勢
1.5.1 可編程器件的發展趨勢
1.5.2 軟體開發工具的發展趨勢
1.5.3 輸入方式的發展趨勢
1.6 EDA技術的應用
1.6.1 EDA技術的應用形式
1.6.2 EDA技術的應用場合
本章小結
思考題和習題
第2章 VHDL硬體描述語言
2.1 VHDL概述
2.1.1 常用硬體描述語言簡介
2.1.2 VHDL及其優點
2.1.3 VHDL程序設計約定
2.1.4 VHDL程序設計舉例
2.2 VHDL程序基本結構
2.2.1 實體
2.2.2 結構體
2.2.3 庫
2.2.4 程序包
2.2.5 配置
2.3 VHDL語言要素
2.3.1 VHDL文字規則
2.3.2 VHDL數據對象
2.3.3 VHDL數據類型
2.3.4 運算操作符
2.3.5 VHDL語言結構體的描述方式
2.4 VHDL順序語句
2.4.1 等待語句和斷言語句
2.4.2 賦值語句
2.4.3 轉向控制語句
2.4.4 子程序調用語句
2.4.5 返回語句
2.5 VHDL並行語句
2.5.1 進程語句
2.5.2 塊語句
2.5.3 並行信號賦值語句
2.5.4 並行過程調用語句
2.5.5 元件例化語句
2.5.6 生成語句
本章小結
思考題和習題
第3章 Quartus Ⅱ軟體及其應用
3.1 Quartus Ⅱ的使用及設計流程
3.1.1 Quartus Ⅱ的圖形編輯輸入法
3.1.2 Quartus Ⅱ的文本編輯輸入法
3.2 Quartus Ⅱ設計正弦信號發生器
3.2.1 創建工程和編輯設計文件
3.2.2 編譯
3.2.3 正弦信號數據ROM定製
3.2.4 模擬
3.2.5 測試
3.2.6 配置器件
3.3 MATLAB/DSP Builder設計可控正弦信號發生器
3.3.1 建立設計模型
3.3.2 Simulink模型模擬
3.3.3 SignalCompiler編譯
3.3.4 使用Quartus Ⅱ實現時序模擬
3.3.5 使用Quartus Ⅱ進行硬體測試
與硬體實現
本章小結
思考題和習題
第4章VHDL應用實例
4.1 組合邏輯電路設計
4.1.1 基本門電路
4.1.2 解碼器
4.1.3 編碼器
4.1.4 數值比較器
4.1.5 數據選擇器
4.1.6 算術運算電路
4.1.7 三態門及匯流排緩沖器
4.2 時序邏輯電路設計
4.2.1 時鍾信號和復位信號
4.2.2 觸發器
4.2.3 寄存器和移位寄存器
4.2.4 計數器
4.2.5 序列信號發生器和檢測器
4.3 存儲器設計
4.3.1 只讀存儲器ROM
4.3.2 隨機存儲器RAM
4.4 狀態機設計
4.4.1 摩爾型狀態機
4.4.2 米立型狀態機
本章小結
思考題和習題
第5章 大規模可編程邏輯器件
5.1 可編程邏輯器件概述
5.2 簡單可編程邏輯器件
5.3 復雜可編程邏輯器件
5.3.1 CPLD的基本結構
5.3.2 Altera公司的器件
5.4 現場可編程門陣列
5.4.1 FPGA的整體結構
5.4.2 Xilinx公司的』FPGA器件
5.4.3 FPGA的配置
5.5 在系統可編程邏輯器件
5.5.1 ispLsI/pLSI的結構
5.5.2 Lattice公司ispLSI系列器件
5.6 FPGA和CPI。D的開發應用選擇
5.6.1 FPGA和CPL|D的性能比較
5.6.2 FPGA和CPLD的開發應用選擇
本章小結
思考題和習題
第6章 常用印A工具軟體
6.1 Altera MAX+plus Ⅱ的使用
6.1.1 MAX+plus Ⅱ功能簡介
6.1.2 MAX+plus Ⅱ設計流程
6.1.3 MAX+plus Ⅱ設計舉例
6.2 Xilinx Foundation的使用
6.2.1 Foundation設計流程
6.2.2.Foundation設計舉例
6.3 ModelSim的使用
6.3.1 ModelSim的使用方法
6.3.2 ModelSim與MAX-+Iplus Ⅱ的介面
6.3.3 ModelSim交互命令方式模擬
6.3.4 ModelSim批處理工作方式。
本章小結
思考題和習題
第7章 EDA技術綜合設計應用
7.1 數字鬧鍾的設計
7.1.1 系統的設計要求
7.1.2 系統的總體設計
7.1.3 鬧鍾控制器的設計
7.1.4 解碼器的設計
7.1.5 鍵盤緩沖器(預置寄存器)的設計
7.1.6 鬧鍾寄存器的設計
7.1.7 時間計數器的設計
7.1.8 顯示驅動器的設計
7.1.9 分頻器的設計
7.1.10 系統的整體組裝
7.1.11 系統的硬體驗證
7.2 多功能信號發生器的設計
7.2.1 設計要求
7.2.2 設計實現
7.2.3 系統模擬
7.3 序列檢測器的設計
7.3.1 設計思路
7.3.2 VHDL程序實現
7.3.3 硬體邏輯驗證
7.4 交通燈信號控制器的設計
7.4.1 設計思路
7.4.2 VHDL程序實現
7.4.3 硬體邏輯驗證
7.5 空調系統有限狀態自動機的設計
7.5.1 設計思路
7.5.2 VHDL程序實現
7.6 電梯控制系統的設計
7.6.1 設計要求
7.6.2 設計實現
7.6.3 系統模擬
7.7 步進電機控制電路的設計
7.7.1 步進電機的工作原理
7.7.2 驅動電路的組成及VHDL實現
7.8 智力競賽搶答器的設計
7.8.1 設計思路
7.8.2 VHDL程序實現
7.9 單片機與FPGA/CPLD匯流排介面的設計
7.9.1 設計思路
7.9.2 VHDL程序實現
本章小結
思考題和習題
第8章 EDA實驗開發系統
8.1 GW48型EDA實驗開發系統原理與使用
8.1.1 系統性能及使用注意事項
8.1.2 系統工作原理
8.1.3 系統主板結構與使用方法
8.2 GW48實驗電路結構圖
8.2.1 實驗電路信號資源符號圖說明
8.2.2各實驗電路結構圖特點與適用范圍簡述
8.3 GW48系統結構圖信號名與晶元引腳對照表
8.4 GWDVP?B電子設計競賽應用板 使用說明
8.5 GW48型EDA實驗開發系統使用實例
本章小結
思考題和習題
第9章 EDA技術實驗
實驗1 8位全加器的設計
實驗2 組合邏輯電路的設計
實驗3 觸發器功能的模擬實現
實驗4 計數器的設計
實驗5 計數解碼顯示電路
實驗6 數字鍾綜合實驗
實驗7 序列檢測器的設計
實驗8 簡易彩燈控制器
實驗9 正負脈寬數控調制信號發生器的設計
實驗10 數字秒錶的設計
實驗11 交通燈信號控制器的設計
實驗12 模擬信號檢測
實驗13 4位十進制頻率計設計
實驗14 VGA顯示器彩條信號發生設計
實驗15 A/D轉換控制器的設計
實驗16 音樂發生器的設計
第10章 EDA技術在全國大學生電子設計競賽中的應用
10.1 等精度頻率計設計
10.1.l 系統設計要求
10.1.2 系統組成
10.1.3 工作原理
10.1.4 FPGA開發的VHDL設計
10.1.5 系統模擬
10.1.6 系統測試與硬體驗證
10.1.7 設計技巧分析及系統擴展思路
10.2 測相儀設計
10.2.1 測相儀工作原理及實現
10.2.2 系統測試
10.3 基於DDS的數字移相正弦信號發生器設計
10.3.1 系統設計要求
10.3.2 系統設計方案
10.3.3 DDS內部主要模塊的VHDL程序實現
10.3.4 系統模擬與硬體驗證
10.3.5 設計技巧分析與系統擴展思路
10.4 邏輯分析儀設計
10.4.1 設計任務
lO.4.2 設計基本要求
10.4.3 設計實現
附錄 常用FPGA/CPLD管腳圖
⑷ 跪求:《數字頻率計的設計》 原理,方框圖,電路圖!
摘 要:文中運用VHDL語言,採用Top To Down的方法,實現8位數字頻率計,並利用Isp Expert集成開發環境進行編輯、綜合、波形模擬,並下載到CPLD器件中,經實際電路測試,該系統系統性能可靠。
關鍵詞:EDA;VHDL;數字頻率計;波形模擬;CPLD�
1引言
VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成電路硬體描述語言)誕生於1982年,是由美國國防部開發的一種快速設計電路的工具,目前已經成為IEEE(The Institute of Electrical and Electronics Engineers)的一種工業標准硬體描述語言。相比傳統的電路系統的設計方法,VHDL具有多層次描述系統硬體功能的能力,支持自頂向下(Top to Down)和基於庫(LibraryBased)的設計的特點,因此設計者可以不必了解硬體結構。從系統設計入手,在頂層進行系統方框圖的劃分和結構設計,在方框圖一級用VHDL對電路的行為進行描述,並進行模擬和糾錯,然後在系統一級進行驗證,最後再用邏輯綜合優化工具生成具體的門級邏輯電路的網表,下載到具體的CPLD器件中去,從而實現可編程的專用集成電路(ASIC)的設計。
數字頻率計是數字電路中的一個典型應用,實際的硬體設計用到的器件較多,連線比較復雜,而且會產生比較大的延時,造成測量誤差、可靠性差。隨著復雜可編程邏輯器件(CPLD)的廣泛應用,以EDA工具作為開發手段,運用VHDL語言。將使整個系統大大簡化。提高整體的性能和可靠性。
本文用VHDL在CPLD器件上實現一種8 b數字頻率計測頻系統,能夠用十進制數碼顯示被測信號的頻率,不僅能夠測量正弦波、方波和三角波等信號的頻率,而且還能對其他多種物理量進行測量。具有體積小、可靠性高、功耗低的特點。
2數字頻率計的基本設計原理
數字頻率計的原理框圖如圖1所示。他主要由5個模塊組成,分別是:脈沖發生器電路、測頻控制信號發生器電路、計數模塊電路、鎖存器、解碼驅動電路。�
當系統正常工作時,脈沖發生器提供的1 Hz的輸入信號,經過測頻控制信號發生器進行信號的變換,產生計數信號,被測信號通過信號整形電路產生同頻率的矩形波,送入計數模塊,計數模塊對輸入的矩形波進行計數,將計數結果送入鎖存器中,保證系統可以穩定顯示數據,顯示解碼驅動電路將二進製表示的計數結果轉換成相應的能夠在七段數碼顯示管上可以顯示的十進制結果。在數碼顯示管上可以看到計數結果。�
3設計實現�
3.1系統方框圖的劃分和結構設計
根據數字頻率計的系統原理框圖(圖1虛線框內),設計系統的頂層電路圖如圖2所示。�
圖2中TESTCTL為測頻控制信號發生器。TESTCTL的計數使能信號TSTEN能產生一個1 s寬的周期信號,並對頻率計的每一計數器CNT10的ENA使能端進行同步控制:當TSTEN高電平時允許計數、低電平時停止計數。
REG32B為鎖存器。在信號Load的上升沿時,立即對模塊的輸入口的數據鎖存到REG32B的內部,並由REG32B的輸出端輸出,然後,七段解碼器可以解碼輸出。在這里使用了鎖存器,好處是可以穩定顯示數據,不會由於周期性的清零信號而不斷閃爍。
CNT10為十進制計數器。有一時鍾使能輸入端ENA,用於鎖定計數值。當高電平時允許計數,低電平時禁止計數。圖2中將8個十進制計數器CNT10級聯起來實現8 b十進制計數功能。
SEVYM為七段解碼顯示驅動電路,可以將頻率計數的結果譯成能在數碼管上顯示相對應的阿拉伯數字,便於讀取測量的結果。
為了實現系統功能,測頻控制信號發生器TESTCTL、計數器CNT10、鎖存器REG32B存在一個工作時序的問題,設計時需要綜合考慮。
圖3給出了系統的工作時序。圖3中CLK是由圖1中脈沖發生器產生的頻率為1 Hz的標准時鍾信號,當測頻控制信號發生器TESTCTL的TSTEN端為高電平時允許計數、低電平時停止計數,在停止計數期間,測頻控制信號發生器TESTCTL的Load端產生一個上升沿,將計數器在前1 s的計數值鎖存進32 b鎖存器REG32B中,並由8個7段解碼器將計數結果譯出穩定顯示。鎖存信號之後經過半個CLK周期,測頻控制信號發生器TESTCTL的CLR�_CNT端產生一個上升沿,對計數器進行清零。為下1 s的計數操作做准備。
為了產生這個時序圖,首先有一個D觸發器構成二分頻器,在每次時鍾CLK的上升沿到來使其值翻轉。D觸發器的輸出高電平正好是1 s,因此可以作為測頻控制信號發生器TESTCTL的TSTEN端,用來控制計數。而Load信號正好是TSTEN端信號的翻轉。在計數結束後半個CLK周期,CLK與TSTEN都為低電平,這時CLR�_CNT產生一個上升沿作為清零信號。�
3.2各模塊的VHDL源程序
採用VHDL描述數字頻率計的電路時,根據圖2所示的數字頻率計系統頂層電路圖,按照自頂向下的設計思路,編寫各個模塊的VHDL源程序,最後再對各個模塊進行組合,編寫頂層描述的VHDL源程序,由於篇幅所限,本文僅介紹數字頻率計頂層描述的源程序,各個模塊的VHDL源程序編寫較為簡單,可以根據各自的功能,相應地寫出。
8位數字頻率計的頂層描述VHDL源程序為:
4系統的功能模擬
Lattice公司推出的Isp Expert的數字系統設計軟體,是一套完整的EDA軟體,能夠對所設計的數字電子系統進行時序模擬和功能模擬。
採用Lattice公司推出的Isp Expert EDA軟體,對所編寫數字頻率計VHDL源程序進行編譯、邏輯綜合,自動地把VHDL描述轉變為門級電路。然後進行波形模擬,編寫的模擬測試向量文件如下(為模擬簡單起見,測試一個66 Hz的周期信號):
模擬後得到的波形圖如圖4所示,從模擬波形上看測量的結果是准確的。還可以進一步修改測試向量文件,進行波形模擬。最後通過編程電纜,將所設計的內容下載到CPLD器件中,進行實物模擬。�
5結語
本文介紹了使用VHDL語言設計數字頻率計的方法,並下載到CPLD中組成實際電路,這樣可以簡化硬體的開發和製造過程,而且使硬體體積大大縮小,並提高了系統的可靠性。同時在基本電路模塊基礎上,不必修改硬體電路,通過修改VHDL源程序,增加一些新功能,滿足不同用戶的需要,實現數字系統硬體的軟體化。
⑸ 怎麼樣用VHDL語言設計計程車計價器 - 知乎
設計一個計程車計費器的目標是用VHDL語言在EDA實訓儀的I/O設備和FPGA上實現。性能指標需滿足:計費器從起步開始計程和計費,起步價為7元,2公里內只收起步價,超過2公里後按每公里1.6元計費,超過10公里或20元後,每公里加收50%,變為每公里2.4元。達到目的地後,按鈕操作清零,准備下一次計費。
設計思路包括計程和計費的十進制輸入,通過脈沖實現計數。計程利用分頻器輸出秒脈沖進行計數。計費在LED數碼管上顯示,分為個位和十位,計程器和計費器在同一個程序內完成,分頻器由另一個程序驅動,兩個程序以圖形法級聯。上硬體模擬後,輸入脈沖上升沿觸發路程計算加一,並使總路程計算模塊加一,根據公里數的不同,每公里收費隨之改變。
詳細設計包括分頻器模塊和計程計費器模塊。分頻器模塊在每次脈沖上升沿時,若達到預設值則清零,否則計數加一,並產生1秒脈沖。計程計費器模塊通過輸入脈沖控制路程計算,同時更新顯示的總費用,根據路程的不同階段調整費用計算。
調試過程中,遇到的挑戰主要在編程代碼和編譯過程中的錯誤,尤其是在always@(*)語句上。在向老師求助後,加入組合邏輯模塊,修改了程序,解決了編譯問題。將修改後的程序下載到硬體中,路程計算功能正常運行,計費功能也按要求工作,達到了驗收標准。
完成功能測試後,驗證了計費器能正確計算路程和費用,並在按下按鍵後能清零數據。使用計算機和EDA實訓儀進行性能指標測試,結果顯示,隨著路程遞增,費用遞增符合設計要求,按下按鍵可自行增加路程。
如果需要完整的資料,包括VHDL代碼、模擬波形圖等,可以加入特定的圈子獲取資源。加入圈子的方式可能需要通過紛傳應用進行,二維碼掃描也可作為另一種接入方式。請注意,具體接入流程和細節可能會根據實際操作環境有所不同。