當前位置:首頁 » 編程軟體 » EDA中編程

EDA中編程

發布時間: 2022-09-09 06:11:30

1. eda是什麼

eda就是電子設計自動化,英語:Electronic design automation,縮寫:EDA,指利用計算機輔助設計(CAD)軟體,來完成超大規模集成電路(VLSI)晶元的功能設計、綜合、驗證、物理設計(包括布局、布線、版圖、設計規則檢查等)等流程的設計方式。

EDA涵蓋了電子設計、模擬、驗證、製造全過程的所有技術,諸如:系統設計與模擬,電路設計與模擬,印製電路板(PCB)設計與校驗,集成電路(IC)版圖設計、驗證和測試,數字邏輯電路設計,晶元上系統(SoC)設計,可編程邏輯器件(PLD)和可編程系統晶元(SOPC)設計,專用集成電路(ASIC)和專用標准產品(ASSP)設計技術等。

eda現況

在電子產業中,由於半導體產業的規模日益擴大,EDA 扮演越來越重要的角色。使用這項技術的廠商多是從事半導體器件製造的代工製造商,以及使用 EDA 模擬軟體以評估生產情況的設計服務公司。EDA 工具也應用在現場可編程邏輯門陣列的程序設計上。

2019年,我國EDA市場規模約為5.8億美元,僅佔全球市場的5.6%。中國EDA廠商總營收不到4.2億元,只佔全球市場份額的0.6%。

2. eda編程9人表決器程序詳解是什麼

eda編程9人表決器程序詳解://本程序用VERILOG HDL語言實現,描述9人表決器。

mole biaojueqi(vote,ledr,ledg,dis_out)

input [8:0] vote

reg [6:0] dis_out;

integer i,sum; //sum表示贊同的人數

for(i=0;i<=8;i=i+1)

if(vote[i]) sum<=sum+1;

end

always @(sum) //結果由dis_out顯示在數碼管上

case (sum)

0: dis_out[6:0]<=7'b1111110;

1: dis_out[6:0]<=7'b0110000;

2: dis_out[6:0]<=7'b1101101;

3: dis_out[6:0]<=7'b1111001;

4: dis_out[6:0]<=7'b0110011;

5: dis_out[6:0]<=7'b1011011;

6: dis_out[6:0]<=7'b1011111;

7: dis_out[6:0]<=7'b1110000;

8: dis_out[6:0]<=7'b1111111;

9: dis_out[6:0]<=7'b1111011;

endmole

內容簡介

本書從實際應用的角度出發,全面系統地介紹了EDA技術和硬體描述語言VHDL,將VHDL的基礎知識、編程技巧、實用方法與實際工程開發技術在EDA軟體設計平台上很好地結合起來,使讀者能夠通過本書的學習迅速了解並掌握EDA技術的基本理論和工程開發實用技術。

3. EDA編程,數字頻率合成器

DDS或DDFS是 Direct Digital Frequency Synthesis 的簡稱。DDS的工作原理是以數控振盪器的方式產生頻率、相位可控制的正弦波。電路一般包括基準時鍾、頻率累加器、相位累加器、幅度/相位轉換電路、D/A轉換器和低通濾波器(LPF)。頻率累加器對輸入信號進行累加運算,產生頻率控制數據K(frequency data或相位步進量)。相位累加器由N位全加器和N位累加寄存器級聯而成,對代表頻率的二進制碼進行累加運算,是典型的反饋電路,產生累加結果。幅度/相位轉換電路實質上是一個波形寄存器,以供查表使用。讀出的數據送入D/A轉換器和低通濾波器。
具體工作過程如下:
每來一個時鍾脈沖fc,N位加法器將頻率控制字K與累加寄存器輸出的累加相位數據相加,把相加後的結果送至累加寄存器的數據輸入端。其中相位累加器由N位加法器與N位累加寄存器級聯構成,累加寄存器將加法器在上一個時鍾脈沖作用後所產生的新相位數據反饋到加法器的輸入端,以使加法器在下一個時鍾脈沖的作用下繼續與頻率控制字K相加。這樣,相位累加器在時鍾作用下,不斷對頻率控制字K進行線性相位累加。由此可見,相位累加器在每一個時鍾脈沖輸入時,把頻率控制字K累加一次,相位累加器輸出的數據就是合成信號的相位,相位累加器的溢出頻率就是DDS輸出的信號頻率。用相位累加器輸出的數據作為波形存儲器ROM的相位取樣地址,可把存儲在波形存儲器內的波形抽樣值(二進制編碼)經查找表查出,完成相位到幅值轉換。波形存儲器的輸出送到D/A轉換器,D/A轉換器將數字量形式的波形幅值轉換成所要求合成頻率的模擬量形式信號,由低通濾波器濾除雜散波和諧波以後,輸出一個頻率為fo的正弦波。輸出頻率fo與時鍾頻率fc之間的關系滿足下式:Fo=K×Fc/2^N
其中fo為輸出頻率,fc為時鍾脈沖,K為頻率控制字。N為累加器的位數(字長)。

在軟體MAX+PLUS Ⅱ中VHDL語言 模擬描述DDS輸出的正弦波程序...

本設計中相位累加器的數據寬度N採用32位
LIBRARY IEEE; --DDS頂層設計
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DDS_VHDL IS
PORT (CLK:IN STD_LOGIC;
FWORD: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --頻率控制字
PWORD: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --相位控制字
FOUT: OUT STD_LOGIC_VECTOR(9 DOWNTO 0) );
END DDS_VHDL;
ARCHITECTURE one OF DDS_VHDL IS
COMPONENT REG32B
PORT (LOAD: IN STD_LOGIC;
DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
END COMPONENT;
COMPONENT REG10B
PORT (LOAD: IN STD_LOGIC;
DIN: IN STD_LOGIC_VECTOR(9 DOWNTO 0);
DOUT: OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END COMPONENT;
COMPONENT ADDER32B
PORT (A: IN STD_LOGIC_VECTOR(31 DOWNTO 0);
B: IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S: OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
END COMPONENT;
COMPONENT ADDER10B
PORT (A: IN STD_LOGIC_VECTOR(9 DOWNTO 0);
B: IN STD_LOGIC_VECTOR(9 DOWNTO 0);
S: OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END COMPONENT;
COMPONENT SIN_ROM
PORT (address: IN STD_LOGIC_VECTOR(9 DOWNTO 0);
inclock: IN STD_LOGIC;
q: OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END COMPONENT;
SIGNAL F32B,D32B,DIN32B: STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL P10B,LIN10B,SIN10B: STD_LOGIC_VECTOR(9 DOWNTO 0);
BEGIN
F32B(27 DOWNTO 20)<=FWORD; F32B (31 DOWNTO 28)<="0000";
P10B(1 DOWNTO 0)<="00";
F32B(19 DOWNTO 0)<="00000000000000000000"; P10B(9 DOWNTO 2)<=PWORD;
u1: ADDER32B PORT MAP(A=>F32B,B=>D32B,S=>DIN32B);
u2: REG32B PORT MAP(DOUT=>D32B,DIN=>DIN32B,LOAD=>CLK);
u3: SIN_ROM PORT MAP(address=>SIN10B,q=>FOUT,inclock=>CLK);
u4: ADDER10B PORT MAP(A=>P10B,B=>D32B(31 DOWNTO 22),S=>LIN10B);
u5: REG10B PORT MAP(DOUT=>SIN10B,DIN=>LIN10B,LOAD=>CLK);
END one;
累加器的VHDL描述
累加器由N位加法器與N位累加寄存器級聯構成,這里的N取32位。
LIBRARY IEEE; --32位加法器模塊
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER32B IS
PORT (A,B: IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S: OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
END ADDER32B;
ARCHITECTURE behav OF ADDER32B IS
BEGIN
S<=A+B;
END behav;

LIBRARY IEEE; --32位寄存器模塊
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG32B IS
PORT (Load: IN STD_LOGIC;
DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
END REG32B;
ARCHITECTURE behav OF REG32B IS
BEGIN
PROCESS(LOAD,DIN)
BEGIN
IF (Load'EVENT AND Load='1') THEN
DOUT<=DIN;
END IF;
END PROCESS;
END behav;
移相加法器的數據寬度採用10位,即輸出的D/A的精度是10位。
LIBRARY IEEE; --10位加法器模塊
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER10B IS
PORT (A,B: IN STD_LOGIC_VECTOR(9 DOWNTO 0);
S: OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END ADDER10B;
ARCHITECTURE behav OF ADDER10B IS
BEGIN
S<=A+B;
END behav;

LIBRARY IEEE; --10位寄存器模塊
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG10B IS
PORT (Load: IN STD_LOGIC;
DIN: IN STD_LOGIC_VECTOR(9 DOWNTO 0);
DOUT: OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END REG10B;
ARCHITECTURE behav OF REG10B IS
BEGIN
PROCESS(LOAD,DIN)
BEGIN
IF (Load'EVENT AND Load='1') THEN
DOUT<=DIN;
END IF;
END PROCESS;
END behav;

定製LPM_ROM初始化數據文件
rom_data.mif 10位正弦波數據文件,可用MATLAB/DSP Builder生成
WIDTH=10;
DEPTH=1024;
ADDRESS_RADIX=DEC;
DATA_RADIX=DEC;
CONTENT BEGIN
0:512; 1:515; 2:518; 3:521; 4:524; 5:527; 6:530; 7:533;
8:537; 9:540; 10:543; 11:546; 12:549; 13:552; 14:555; ....(略去部分數據)
1018:493; 1019:496; 1020:499; 1021:502; 1022:505; 1023:508;
END;
用於例化的波形數據ROM
用於例化的波形數據ROM文件
LIBRARY IEEE; --數據ROM
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY sin_rom IS
PORT (address: IN STD_LOGIC_VECTOR(9 DOWNTO 0);
inclock: IN STD_LOGIC;
q: OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END sin_rom;
ARCHITECTURE SYN OF sin_rom IS
SIGNAL sub_wire0: STD_LOGIC_VECTOR(9 DOWNTO 0);
COMPONENT lpm_rom --調用LPM ROM模塊
GENERIC (lpm_width : NATURAL;
lpm_widthad : NATURAL;
lpm_address_control: STRING;
lpm_outdata : STRING;
lpm_file : STRING);
PORT (address: IN STD_LOGIC_VECTOR(9 DOWNTO 0);
inclock: IN STD_LOGIC;
q: OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END COMPONENT;
BEGIN
q<=sub_wire0(9 DOWNTO 0);
lpm_rom_component: lpm_rom GENERIC MAP(
LPM_WIDTH=>10,
LPM_WIDTHAD=>10,
LPM_ADDRESS_CONTROL=>"REGISTERED",
LPM_OUTDATA=>"UNREGISTERED",
LPM_FILE=>"ROM_DATA.mif") --ROM數據文件及其路徑
PORT MAP(address=>address,inclock=>inclock,q=>sub_wire0);
END SYN;

這個太多咯,DDS基本原理書上或網上多得很, 一般在EDA技術的書上講有VHDL語言實現DDS的代碼、、

4. eda編程9人表決器

「三人表決器」
「三人表決器」的邏輯功能是:表決結果與多數人意見相同。
設x0、x1、x2為三個人(輸入邏輯變數),贊成為1,不贊成為0;
y0為表決結果(輸出邏輯變數),多數贊成y0為1,否則,y0為0。其真值表如表1所示。
表1
「三人表決器」真值表
輸入邏輯變數
輸出邏輯變數
x0
x1
x2
y0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
1
由真值表寫出邏輯表達式並化簡得:y0=x0*x1+x0*x2+x1*x2
(1)
要實現這個邏輯功能,如果用「集成邏輯門」,則可選用三個兩輸入「與門」和一個三輸入「或門」來實現。但是,這里我們不是用「集成邏輯門」,而是用plc「程序」來實現。
程序語句如下:
0
ld
x0
1
and
x1
2
ld
x0
3
and
x2
4
orb
5
ld
x1
6
and
x2
7
orb
8
out
y0
9
end
將這個程序語句寫入到plc中,再進行接線:用三個開關分別控制x0、x1、x2,用一盞指示燈來顯示表決結果,並將com1連接到24v直流電源的正極。接線完畢就可以進行演示實驗的操作了。如果贊成,則合上開關;如果不贊成,則斷開開關。指示燈的亮滅,顯示的是表決的結果。燈亮表示多數贊成,燈不亮,則表示多數不贊成。表決結果與多數人意見相同。
下面探討一下由「邏輯表達式」來編寫plc程序的規律。一般書上用a、b、c表示輸入邏輯變數,用y表示輸出邏輯變數。在這里為了編程的方便,我們有意把plc的輸入繼電器(x)的觸點作為輸入邏輯變數,把輸出繼電器的線圈作為輸出邏輯變數。例如,在表達式(1)中,x0、x1、x2為三個輸入邏輯變數,代表三個人,y0為輸出邏輯變數,代表表決結果。同時在plc中,x0、x1、x2又是三個輸入繼電器,都是輸入繼電器的常開觸點;
y0是一個輸出繼電器,是輸出繼電器的一個線圈。
式(1)是一個「與或式」,在第一項x0*x1中,「x0」在項首,用[ld]指令,即ld
x0,「*」是「與」邏輯,用[and]指令,即and
x1。第二項、第三項也是這個規律,三項相加,
「+」是「或」邏輯,用[orb]指令,[orb]指令是「塊或」指令。因為每一個「與項」都是兩個觸點相串聯的「串聯電路塊」,而「相加」就是作並聯連接,即「串聯電路塊」作並聯連接,所以要用「塊或」指令。y0是輸出,用線圈輸出指令[out],即out
y0。程序結束用
[end]指令。認真總結由「邏輯表達式」來編寫plc程序的規律,這對於快速編程很有好處。但是,一般的初學者,往往都是由「邏輯表達式」到「梯形圖」,再到「程序語句」。為了幫助初學者,我們將這個程序的梯形圖一並給出,如下圖所示。

5. EDA編程的主要架構是什麼,有幾種編程方式,它們各有什麼特點

在EDA技術中,自頂向下的設計方法的重要意義是什麼? 答:在EDA技術應用中,自頂... 方式不同,可再分為門陣列法、標准單元法和可編程邏輯器件法。 1-9 FPGA/CPLD在... 電可擦除編程工藝的優點是編程後信息不會因掉電而丟失,

6. EDA實驗中如何編程讓8位數碼管分別循環顯示01234567要求:八個數碼管依次點亮且先點亮的數碼管不會熄滅

這么簡單....數碼管是共樣的還是共陰的。7段還是8段的數碼管?8個8bit寄存器,每個對應一個一位數字。用case語句直接搞定

熱點內容
音頻去噪演算法 發布:2025-03-26 15:17:58 瀏覽:554
透明pp文件夾 發布:2025-03-26 15:15:52 瀏覽:143
perl的編譯器 發布:2025-03-26 15:12:25 瀏覽:358
linuxug 發布:2025-03-26 15:12:21 瀏覽:508
濟寧編程 發布:2025-03-26 15:11:43 瀏覽:796
手機如何緩存電影 發布:2025-03-26 15:10:03 瀏覽:611
phppost類 發布:2025-03-26 15:10:01 瀏覽:202
php基礎語法 發布:2025-03-26 15:05:50 瀏覽:549
新3系取消了哪些配置 發布:2025-03-26 14:56:01 瀏覽:288
java泛型的介面 發布:2025-03-26 14:55:04 瀏覽:297