❶ EDA技術實用教程的目錄
第1章緒論11.1EDA技術概論11.1.1EDA技術及發展21.1.2EDA技術應用41.2PLD及FPGA/CPLD產品概述51.2.1PLD技術及發展61.2.2PLD技術分類61.2.3PLD產品可編程原理71.2.4CPLD結構與可編程原理211.2.5FPGA結構與可編程原理291.2.6FPGA/CPLD器件配置器件321.3EDA設計基礎(數字系統)33小結36習題36
第2章FPGA/CPLD系統設計372.1FPGA/CPLD設計流程及常用開發工具372.1.1FPGA/CPLD設計流程372.1.2FPGA/CPLD常用開發工具382.2Quartus Ⅱ9.0軟體概述382.2.1Quartus Ⅱ 9.0軟體特點及支持的器件392.2.2Quartus Ⅱ 9.0軟體用戶界面及功能簡介402.2.3Quartus Ⅱ 9.0軟體設計流程462.2.4Quartus Ⅱ 9.0軟體設計實例472.3ISE10.1軟體概述542.3.1ISE10.1軟體特點及支持的器件552.3.2ISE10.1軟體用戶界面及功能簡介552.3.3ISE10.1軟體設計實例602.4Actel Libero IDE v9.1軟體概述632.4.1軟體特點及支持的器件632.4.2軟體用戶界面及功能簡介652.4.3Actel Libero IDE v9.1軟體設計實例68小結72習題73
第3章VHDL基礎743.1VHDL的基本元素743.1.1標識符743.1.2數據對象763.1.3數據類型803.1.4運算操作符853.2VHDL的語句基礎903.2.1進程語句903.2.2信號賦值語句943.2.3順序描述語句983.2.4並行描述語句1153.3VHDL的屬性描述1243.3.1值類屬性1253.3.2函數類屬性1283.3.3信號類屬性1313.3.4數據類型類屬性1333.3.5數據范圍類屬性134小結135習題135
第4章VHDL程序結構1364.1VHDL基本建模結構1364.1.1行為描述1364.1.2數據流描述1374.1.3結構描述1374.2VHDL實體1394.2.1實體語句1394.2.2參數傳遞說明語句1394.2.3參數傳遞映射語句1414.2.4埠說明語句1414.2.5實體說明部分1424.3VHDL結構體1424.3.1結構體名1434.3.2結構體說明部分1434.3.3並行處理語句1434.4子程序1444.4.1過程1444.4.2函數1494.5VHDL庫和程序包1544.5.1庫1544.5.2程序包1554.6元件和配置1564.6.1默認連接和默認配置1564.6.2元件配置1594.6.3塊的配置1614.6.4結構體配置164小結164習題165
第5章VHDL語言規范化標准及常見Warning分析1665.1編碼設計1665.1.1結構化設計1665.1.2代碼描述1675.1.3內部命名規則1675.1.4其他1685.2可綜合代碼描述規則1685.2.1概述1685.2.2復位1695.2.3時鍾1725.2.4介面非同步信號處理1745.2.5寄存器和鎖存器1755.2.6有限狀態機1775.2.7使用Case語句的多路復用1815.2.8編碼器1815.2.9解碼器1855.2.10計數器1885.2.11運算1885.2.12I/O1905.2.13非同步設計1915.3優化設計1925.3.1標准單元實現1935.3.2復雜邏輯運算單元共享1935.3.3中間信號1935.3.4針對目標FPGA的優化1945.3.5綜合工具設置優化1945.4常見Warning分析195小結196習題196
第6章NIOS軟核SOPC系統設計1976.1Nios Ⅱ軟核SOPC系統1976.1.1SOPC技術簡介1976.1.2Nios Ⅱ軟核SOPC系統結構及開發環境1986.2Nios Ⅱ指令系統1996.2.1寄存器結構1996.2.2定址方式2016.2.3Nios Ⅱ指令集2016.2.4Nios Ⅱ定製指令2066.3SOPC硬體系統開發2116.3.1硬體開發流程及環境介紹2126.3.2創建Quartus Ⅱ工程2126.3.3生成Nios Ⅱ系統2146.3.4集成Nios Ⅱ系統到Quartus Ⅱ工程2186.3.5Quartus Ⅱ工程編譯及下載2196.4SOPC軟體系統開發2196.4.1軟體開發流程及環境介紹2196.4.2HAL系統庫2206.4.3Nios Ⅱ IDE用戶應用程序建立2206.5Nios Ⅱ外圍設備2236.5.1SDRAM控制器2236.5.2CFI控制器2256.5.3EPCS設備控制器2266.5.4PIO控制器2276.5.5定時器控制器2276.5.6DMA控制器2296.5.7SPI核2306.5.8UART核2306.5.9JTAGUART核2316.5.10系統ID核2326.5.11PLL核2326.5.12mutex核2336.6SOPC系統深入設計——用戶定製外設2346.6.1元件開發流程2346.6.2硬體設計2356.6.3軟體設計2366.6.4驗證設計2366.6.5共享元件237小結237習題237
第7章Altera的IP核工具2387.1基本概念2387.1.1IP核的概念2387.1.2Altera可提供的IP核2397.2Altera基本宏功能設計實現2417.2.1基本宏功能定製2417.2.2基本宏功能實現2447.2.3設計實例2477.3Altera IP核設計實現2507.3.1IP核定製2517.3.2IP核實現2537.3.3設計實例254小結255習題255
第8章Quartus Ⅱ 9.0軟體功能及常用輔助設計工具2568.1I/O分配驗證2568.1.1I/O分配驗證簡介2578.1.2I/O分配驗證運行2608.2功率分析2628.2.1Excel-based功率計算器2638.2.2Simulation-based功率估算2668.3原理圖觀察工具2668.3.1RTL閱讀器2678.3.2技術映射查看器2738.4SignalProbe及SignalTap Ⅱ邏輯分析器2748.4.1SignalProbe2748.4.2SignalTap Ⅱ邏輯分析器2778.5時序收斂平面布局規劃器和器件規劃圖2838.5.1概述2848.5.2設計流程2858.6Quartus Ⅱ 9.0支持的第三方工具2938.6.1NativeLink與WYSIWYG2938.6.2Modelsim模擬工具2958.6.3Synplify/Sinplify Pro綜合工具310小結315習題315
參考文獻316
❷ EDA高手進來,幫忙用VHDL語言寫一個方波信號發生器,要求實現調頻和找空比調節功能。有完整論文更好
你這個可以用模擬圖實現的 無需寫程序 給個參考你吧
本設計有5個模塊組成,其中有:方波發生器,三角波發生器,正弦波發生器,階梯波發生器,4選1選擇器。下面是我設計的整個過程:
方波發生器:實質上是一段時間輸出0,一段時間輸出255的數字信號,當然這有8位的通道輸出。
程序設計如下:
--工程名:方波發生器
--功能:產生方波,是通過交替送出全0和全1實現的,每32個時鍾翻轉一次
--時間:2010-12-17
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity sqaure is
port(clk,clr:in std_logic;
q:out integer range 0 to 255
);
end entity;
architecture behav of sqaure is
signal a:bit;
begin
process(clk,clr) --計數分頻
variable cnt:integer range 0 to 32;
begin
if(clr='0') then
a<='0';
elsif clk'event and clk='1' then
if cnt<31 then --進行32分頻
cnt:=cnt+1;
else
cnt:=0;
a<=not a;
end if;
end if;
end process;
process(clk,a) --信號輸出
begin
if clk'event and clk='1' then
if a='1' then
q<=255;
else
q<=0;
end if;
end if;
end process;
end behav;
三角波發生器:實質上是先輸出直線遞增的數字信號,隨後按照同樣的斜率輸出遞減的數字信號。這樣就能實現三角波的發生了。
程序設計如下:
--工程名:三角波信號發生器
--功能:產生的三角波以64個時鍾為一個周期,輸出q每次加減8。
--時間:2010-12-17
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity delta1 is
port(clk:in std_logic;--時鍾信號
rst:in std_logic;--復位信號
q:out std_logic_vector(7 downto 0)); --輸出信號
end entity;
architecture behav of delta1 is
begin
process(clk,rst)
variable tmp:std_logic_vector(7 downto 0);
variable a:std_logic;
begin
if(rst='0') then
tmp:="00000000";
elsif clk'event and clk='1' then
if(a='0') then
if(tmp="11111000") then --tmp=248
tmp:="11111111";
a:='1';--信號計數完成,下一次改成遞減
else
tmp:=tmp+8;--遞增
end if;
else
if tmp="00000111" then --tmp=7
tmp:="00000000";
a:='0';--信號計數完成,下一次改成遞增
else
tmp:=tmp-8;--遞減
end if;
end if;
end if;
q<=tmp;--信號輸出
end process;
end behav;
正弦波發生器:這里我設計了64個狀態,就是將一個周期的正弦波分成64分,在然後一份份的數字信號輸出就可以了。具體怎麼取值,用excel計算就可以了。自己手動計算也可以的哦。
具體程序設計如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity sin1 is
port(clk,clr:in std_logic;
d:out integer range 0 to 255);
end entity;
architecture behav of sin1 is
begin
process(clk,clr)
variable tmp:integer range 0 to 63;
begin
if clr='0' then
d<=0;
elsif clk'event and clk='1' then
if tmp=63 then
tmp:=0;
else
tmp:=tmp+1;
end if;
case tmp is
when 00=>d<=255; when 01=>d<=254;when 02=>d<=252;
when 03=>d<=249; when 04=>d<=245;when 05=>d<=239;
when 06=>d<=233; when 07=>d<=225;when 08=>d<=217;
when 09=>d<=207; when 10=>d<=197;when 11=>d<=186;
when 12=>d<=174; when 13=>d<=162;when 14=>d<=150;
when 15=>d<=137; when 16=>d<=124;when 17=>d<=112;
when 18=>d<=99; when 19=>d<=87; when 20=>d<=75;
when 21=>d<=64; when 22=>d<=53; when 23=>d<=43;
when 24=>d<=34; when 25=>d<=26; when 26=>d<=19;
when 27=>d<=13; when 28=>d<=8; when 29=>d<=4;
when 30=>d<=1; when 31=>d<=0; when 32=>d<=0;
when 33=>d<=1; when 34=>d<=4; when 35=>d<=8;
when 36=>d<=13; when 37=>d<=19; when 38=>d<=26;
when 39=>d<=34; when 40=>d<=43; when 41=>d<=53;
when 42=>d<=64; when 43=>d<=75; when 44=>d<=87;
when 45=>d<=99; when 46=>d<=112;when 47=>d<=124;
when 48=>d<=137; when 49=>d<=150;when 50=>d<=162;
when 51=>d<=174; when 52=>d<=186;when 53=>d<=197;
when 54=>d<=207; when 55=>d<=217;when 56=>d<=225;
when 57=>d<=233; when 58=>d<=239;when 59=>d<=245;
when 60=>d<=249; when 61=>d<=252;when 62=>d<=252;
when 63=>d<=255;
when others=>null;
end case;
end if;
end process;
end behav;
❸ 什麼是eda技術eda技術的核心內容是什麼
EDA技術是指以計算機為工作平台,融合了應用電子技術、計算機技術、信息處理及智能化技術的最新成果,進行電子產品的自動設計。
核心內容包括數字系統的設計流程、印刷電路板圖設計、可編程邏輯器件及設計方法、硬體描述語言VHDL、EDA開發工具等內容。EDA技術的出現,極大地提高了電路設計的效率和可操作性,減輕了設計者的勞動強度。
設計者在EDA軟體平台上,用硬體描述語言VerilogHDL完成設計文件,然後由計算機自動地完成邏輯編譯、化簡、分割、綜合、優化、布局、布線和模擬,直至對於特定目標晶元的適配編譯、邏輯映射和編程下載等工作。
EDA技術的發展:
1、80年代為計算機輔助工程(CAE)階段。與CAD相比,CAE除了有純粹的圖形繪制功能租源李外,又增加了電路功能設計和結構設計,並且通過電氣連接網路表將兩者結合在一起,實現了工程設計。CAE的主要功能是:原理圖輸入,邏輯模擬,電路分析,自動布局布線,PCB後分析。
2、90年代為電子系統設計自動化(EDA)階段。
3、現代EDA技術就是以計算機為工具,在EDA軟體平台上,根據硬體描述語言HDL完成的設計文件,能自動地完成用軟體方式描述的電子系統到硬體系統的布局布線、邏輯模擬,直至完成對於弊遲特定目標晶元的適配編譯、邏輯映射和編程下載等工作。
4、ESDA代表了當今電子設計技術的最新發展方向,其裂段基本特徵是:設計人員按照「自頂向下」的設計方法,對整個系統進行方案設計和功能劃分,系統的關鍵電路用一片或幾片專用集成電路(ASIC)實現。
❹ EDA 技術與VHDL第3版內容提要
EDA技術與VHDL第3版內容提要如下:
全面介紹EDA技術:本書對EDA技術進行了全面而深入的介紹,旨在為讀者提供堅實的理論基礎。
詳細講解VHDL語言:書中詳細闡述了VHDL的基礎知識,包括其語法、結構與應用,幫助讀者理解和掌握VHDL編程技巧。
結合先進EDA軟體與硬體平台:本書結合了Quartus II 9.0這一先進的EDA軟體設計平台與Cyclone III FPGA硬體平台,通過實際操作與案例分析,使讀者能夠深入理解EDA技術的應用。
注重實際工程設計能力:內容編排上緊密聯系實際工程設計需求,通過具體案例的講解與分析,提升讀者的實際工程設計能力和自主創新能力。
提供大量示例代碼:書中包含大量的示例代碼,讓讀者能夠通過實踐來鞏固所學知識,提升編程技能。
強調理論與實踐結合:本書不僅提供了全面的理論知識,還強調了實踐操作的重要性,將理論知識與實踐操作緊密結合起來,為讀者提供一個全面、深入、實用的學習與實踐平台。
❺ EDA的主要內容
EDA技術是一種以計算機為基礎,結合了電子技術、計算機技術、信息處理技術及智能化技術的創新方法,專注於電子產品的自動設計。這項技術的核心在於數字系統的設計流程、印刷電路板圖設計、可編程邏輯器件及其設計方法,以及硬體描述語言VHDL的應用。除此之外,EDA開發工具也是其重要組成部分,這些工具極大地提升了電路設計的效率和可操作性。
通過EDA技術,設計者能夠以更高的效率完成復雜的電子設計工作,簡化了設計流程,減少了錯誤的發生。它不僅縮短了產品開發周期,還提升了產品的可靠性和性能。更為重要的是,EDA技術的引入使得設計師能夠專注於創新和優化設計,而不是被繁瑣的重復工作所困擾。
數字系統設計流程是EDA技術中一個關鍵環節,它涉及從需求分析到最終實現的整個過程。設計師需要考慮功能要求、性能指標、成本預算等多方面因素,通過一系列的演算法和工具來確保設計的准確性和高效性。印刷電路板圖設計則關注於電路的具體實現,包括元件的選擇、布局布線等,這些都是決定電路性能的關鍵因素。
可編程邏輯器件及設計方法也是EDA技術中的重要部分。這些器件具有高度靈活性和可編程性,能夠滿足各種復雜的設計需求。而硬體描述語言VHDL作為一種標准化的語言,用於描述數字系統的行為和結構,極大地簡化了設計過程,提高了設計的可讀性和可維護性。
EDA開發工具是實現上述功能的關鍵,它們提供了從設計輸入到驗證、綜合、布局布線等一系列自動化流程,使得設計師能夠更專注於創新設計。隨著技術的不斷進步,這些工具也在不斷地更新和完善,為設計師提供了更加高效、便捷的工作環境。
綜上所述,EDA技術不僅極大地提高了電路設計的效率,還為設計師帶來了更廣闊的設計空間和更多的可能性。通過這種方式,設計師可以更專注於創新和優化,從而推動電子產品的不斷進步和發展。