第一篇:EDA實(shí)習(xí)報(bào)告
EDA實(shí)驗(yàn)報(bào)告
系別:
班級:
姓名:
學(xué)號:
目錄
1.EDA介紹
2.Quartus II軟件介紹
3.實(shí)習(xí)任務(wù)
4.封裝引腳圖
5.設(shè)計(jì)程序
6.結(jié)果顯示
7.實(shí)習(xí)心得
1.EDA介紹
EDA是電子設(shè)計(jì)自動化(Electronic Design Automation)縮寫。EDA技術(shù)是以計(jì)算機(jī)為工具,根據(jù)硬件描述語言HDL(Hardware Description language)完成的設(shè)計(jì)文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標(biāo)芯片的適配編譯和編程下載等工作。硬件描述語言HDL是相對于一般的計(jì)算機(jī)軟件語言,如:C、PASCAL而言的。HDL語言使用與設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計(jì)者可利用HDL程序來描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實(shí)現(xiàn)相應(yīng)邏輯功能的的門級或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL[1]。
幾乎所有適于大學(xué)生做的數(shù)字邏輯電路實(shí)驗(yàn)都可以在計(jì)算機(jī)上利用EDA(Electronic Design Automatic—電子設(shè)計(jì)自動化)軟件進(jìn)行設(shè)計(jì)、仿真,只有極少量外部配件不能在計(jì)算機(jī)上進(jìn)行仿真。因此,在實(shí)驗(yàn)前期階段,即實(shí)驗(yàn)預(yù)習(xí)階段的主要應(yīng)用工具是EDA軟件,利用EDA軟件可以設(shè)計(jì)、仿真實(shí)驗(yàn)課題,進(jìn)行虛擬實(shí)驗(yàn)。通過虛擬實(shí)驗(yàn)使實(shí)驗(yàn)者在進(jìn)入真實(shí)實(shí)驗(yàn)前就能對預(yù)做的實(shí)驗(yàn)有相當(dāng)?shù)牧私猓踔量梢灶A(yù)測到實(shí)驗(yàn)的結(jié)果。這樣在實(shí)際做實(shí)驗(yàn)時(shí),可以把許多設(shè)計(jì)型實(shí)驗(yàn)的難度降低,同時(shí)能有更多的時(shí)間讓實(shí)驗(yàn)者動手做實(shí)驗(yàn),研究問題,提高實(shí)驗(yàn)效率。當(dāng)前數(shù)字電路設(shè)計(jì)已由計(jì)算機(jī)輔助設(shè)計(jì)進(jìn)入到以計(jì)算機(jī)為主的設(shè)計(jì)時(shí)代。
2.Quartus II 是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三放EDA工具。
此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺。
Maxplus II 作為Altera的上一代PLD設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計(jì)輔助工具,集成了SOPC和HardCopy設(shè)計(jì)流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。
3.1 設(shè)計(jì)信號發(fā)生器使其能在儀器上顯示正弦、三角、方波、鋸齒波(其中的兩種波形)
2設(shè)計(jì)頻率計(jì)使其能測出制定波形的頻率
4.波形發(fā)生器封裝引腳圖
5.波形發(fā)生器程序(正弦波,方波)
Boxing4
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY boxing4 IS PORT(RIN:in std_logic;
clk: IN std_logic;SINT:in std_logic_VECTOR(1 downto 0);--set:in std_logic;--_vector;--(1 downto 0);rs,rw,en,lcdon,lcdbon : OUT STD_LOGIC;YOUT:out std_logic_vector(7 downto 0);data : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END boxing4;ARCHITECTURE fwm OF boxing4 IS
TYPE states IS(clear_display,set_initial,set_cgram,write_cgram,set_addram1,diaplay_cgram,set_addram2,diaplay_cgrom);--clear_display-清屏;--set_initial-初始化設(shè)置;--set_cgram-設(shè)置 cgram 地址;--write_cgram-字模寫入 cgram;--set_addram1-設(shè)置顯示 cgram 字符的 addram 地址;--diaplay_cgram-顯示 cgram 字符;--set_addram2-設(shè)置顯示 cgrom 字符的 addram 地址;--diaplay_cgrom-顯示 cgrom 字符 SIGNAL state:states;TYPE ram_array0 IS ARRAY(0 TO 7)OF STD_LOGIC_VECTOR(7 DOWNTO 0);--定義 ram_array0 為二維數(shù)組
TYPE ram_array1 IS ARRAY(0 TO 7)OF ram_array0;--定義 ram_array1 為三維數(shù)組 SIGNAL lcd_clk : STD_LOGIC;SIGNAL data1,data2,data3:INTEGER RANGE 0 TO 9;--signal n:std_logic;SIGNAL net1,net2:std_logic_vector(7 downto 0);--signal net3:std_logic;
COMPONENT choice4_1
PORT(s:in std_logic_vector(1 downto 0);
d1,d2: in std_logic_vector(7 downto 0);
y: out std_logic_vector(7 downto 0));END COMPONENT;COMPONENT fangbo PORT(clkf,rf:in std_logic;
qf:out std_logic_vector(7 downto 0));END COMPONENT;COMPONENT sin PORT(clksin,rsin:in std_logic;
da:out std_logic_vector(7 downto 0));END COMPONENT;BEGIN u1: fangbo PORT MAP(clkf=>CLK,rf=>RIN,qf=>net1);u2: sin PORT MAP(clksin=>CLK,rsin=>RIN,da=>net2);u3: choice4_1 PORT MAP(s=>SINT,d1=>net1,d2=>net2,y=>YOUT);en <=lcd_clk;rw<= '0';lcdon<='1';lcdbon<='1';data1<=1;data2<=2;data3<=5;
PROCESS(clk)
CONSTANT m : INTEGER:=50000;--50M 分頻到 1kHz。
VARIABLE cout : INTEGER RANGE 0 TO 50000000:=0;BEGIN
IF clk'EVENT AND clk='0' THEN cout:=cout+1;
IF cout<=m/2 THEN lcd_clk<='1';
ELSIF cout ELSE cout:=0; END IF; END IF; END PROCESS; PROCESS(lcd_clk)CONSTANT cgram : ram_array1:=(--自定義 8 個(gè) 5*8 字符的字模(X“00”,X“0E”,X“00”,X“0E”,X“00”,X“1F”,X“00”,X“00”),--SAN(X“04”,X“1F”,X“04”,X“07”,X“05”,X“09”,X“13”,X“01”),--FANG(X“00”,X“1f”,X“04”,X“04”,X“17”,X“14”,X“14”,X“1f”),--ZHENG(X“0E”,X“02”,X“0E”,X“08”,X“08”,X“0e”,X“02”,X“0e”),--ZUO XIAN(X“04”,X“1E”,X“04”,X“08”,X“1e”,X“04”,X“09”,X“1f”),--YOU XIAN(X“00”,X“13”,X“0A”,X“03”,X“1a”,X“02”,X“0a”,X“13”),--ZUO BO(X“08”,X“1F”,X“09”,X“1E”,X“14”,X“08”,X“14”,X“03”),--YOU BO(X“18”,X“18”,X“07”,X“08”,X“08”,X“08”,X“07”,X“00”)--℃字符數(shù)據(jù)存儲器); VARIABLE datacnt:INTEGER RANGE 0 TO 15; VARIABLE cnt: STD_LOGIC_VECTOR(7 DOWNTO 0); VARIABLE num:INTEGER RANGE 0 TO 7;BEGIN--wait until net3='0';RISING_EDGE(lcd_clk); IF RISING_EDGE(lcd_clk)THEN --if sint=“00”then case sint is when “11”=> CASE state IS WHEN clear_display=> rs<='0';data<=“00000001”;state<=set_Initial;--清屏 WHEN set_initial=> IF datacnt<3 THEN rs<='0';data<=“00111000”;datacnt:=datacnt+1;--設(shè)置功能:8 位,兩行,5×8/每字符,重復(fù) 3 次 ELSIF datacnt=3 THEN rs<='0';data<=“00000110”;datacnt:=datacnt+1;--顯示模式:完成一個(gè)字符碼傳送后,AC 自動加 1;顯 ELSIF datacnt=4 THEN rs<='0';data<=“00001100”;datacnt:=datacnt+1;--顯示控制:顯示開,光標(biāo)關(guān),光標(biāo)不閃爍 ELSE rs<='0';datacnt:=0;state <= set_cgram; END IF; WHEN set_cgram=>rs<='0';--設(shè)置 CGRAM 字符地址 data<=“01000000”+cnt;state<=write_cgram;--設(shè)置 CGRAM 字符地址 000 IF num <8 THEN cnt:=cnt+“00001000”;--設(shè)置 CGRAM 字符地址加 1 END IF; WHEN write_cgram=> rs<='1';--在 指 定 的--CGRAM 字符地址寫入對應(yīng)的 8 個(gè) 5*8 字符字模 data <= cgram(num)(datacnt);datacnt:=datacnt+1;state <= write_cgram;--寫入 CGRAM 字符地址 000 的 5*8--字符字模 IF datacnt=8 THEN num:=num+1;datacnt:=0;state <= set_cgram;--寫入下一個(gè)自定義--的 5*8 字符字模 IF num =7 THEN num:=0;cnt:=“00000000”;state<=set_addram1;--8 個(gè) 5*8 字符字模寫--入完成 END IF; END IF; WHEN set_addram1=>rs<='0';--設(shè)置 ADDRAM 地址 1 data<=“10000000”;state<=diaplay_cgram; WHEN diaplay_cgram=>rs<='1';--顯示 ADDRAM 地址對應(yīng)的 CGRAM 字符 --if sint=“00”then IF datacnt=0 THEN data<=X“02”;datacnt:=datacnt+1; ELSIF datacnt=1 THEN data<=X“03”;datacnt:=datacnt+1; ELSIF datacnt=2 THEN data <= X“04”;datacnt:=datacnt+1; ELSIF datacnt=3 THEN data<=X“05”;datacnt:=datacnt+1; ELSIF datacnt=4 THEN data<=X“06”;datacnt:=datacnt+1; ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=7 THEN data<=X“46”;datacnt:=datacnt+1; ELSIF datacnt=8 THEN data<=X“3a”;datacnt:=datacnt+1; ELSIF datacnt=9 THEN data<=X“31”;datacnt:=datacnt+1; ELSIF datacnt=10 THEN data<=X“30”;datacnt:=datacnt+1; ELSIF datacnt=11 THEN data<=X“4d”;datacnt:=datacnt+1; ELSIF datacnt=12 THEN data<=X“48”;datacnt:=datacnt+1; ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1;--顯示 cgrom 中指定的 ELSIF datacnt=14 THEN data<=X“5a”;datacnt:=datacnt+1; ELSE data<=X“20”;datacnt:=0;state <= set_addram2; END IF; WHEN set_addram2=>rs<='0';--設(shè)置 ADDRAM 地址 2 data<=“11000000”;state<=diaplay_cgrom; WHEN diaplay_cgrom=>rs<='1'; IF datacnt=0 THEN data<=X“4A”;datacnt:=datacnt+1; ELSIF datacnt=1 THEN data<=X“41”;datacnt:=datacnt+1; ELSIF datacnt=2 THEN data<=X“43”;datacnt:=datacnt+1; ELSIF datacnt=3 THEN data<=X“4B”;datacnt:=datacnt+1; ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=7 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=8 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=9 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=10 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=11 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1; ELSIF datacnt=12 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data2+48,8);datacnt:=datacnt+1; ELSIF datacnt=14 THEN data<=CONV_STD_LOGIC_VECTOR(data1+48,8);datacnt:=datacnt+1; ELSE data<=X“56”;datacnt:=0;state <= set_addram1; END IF; END CASE; --end if; when “01”=> --elsif sint =“01”then CASE state IS WHEN clear_display=> rs<='0';data<=“00000001”;state<=set_Initial;--清屏 WHEN set_initial=> IF datacnt<3 THEN rs<='0';data<=“00111000”;datacnt:=datacnt+1;--設(shè)置功能:8 位,兩行,5×8/每字符,重復(fù) 3 次 ELSIF datacnt=3 THEN rs<='0';data<=“00000110”;datacnt:=datacnt+1;--顯示模式:完成一個(gè)字符碼傳送后,AC 自動加 1;顯 ELSIF datacnt=4 THEN rs<='0';data<=“00001100”;datacnt:=datacnt+1;--顯示控制:顯示開,光標(biāo)關(guān),光標(biāo)不閃爍 ELSE rs<='0';datacnt:=0;state <= set_cgram; END IF; WHEN set_cgram=>rs<='0';--設(shè)置 CGRAM 字符地址 data<=“01000000”+cnt;state<=write_cgram;--設(shè)置 CGRAM 字符地址 000 IF num <8 THEN cnt:=cnt+“00001000”;--設(shè)置 CGRAM 字符地址加 1 END IF; WHEN write_cgram=> rs<='1';--在 指 定 的--CGRAM 字符地址寫入對應(yīng)的 8 個(gè) 5*8 字符字模 data <= cgram(num)(datacnt);datacnt:=datacnt+1;state <= write_cgram;--寫入 CGRAM 字符地址 000 的 5*8--字符字模 IF datacnt=8 THEN num:=num+1;datacnt:=0;state <= set_cgram;--寫入下一個(gè)自定義--的 5*8 字符字模 IF num =7 THEN num:=0;cnt:=“00000000”;state<=set_addram1;--8 個(gè) 5*8 字符字模寫--入完成 END IF; END IF; WHEN set_addram1=>rs<='0';--設(shè)置 ADDRAM 地址 1 data<=“10000000”;state<=diaplay_cgram; WHEN diaplay_cgram=>rs<='1';--顯示 ADDRAM 地址對應(yīng)的 CGRAM 字符 --if sint=“00”then IF datacnt=0 THEN data<=X“01”;datacnt:=datacnt+1; ELSIF datacnt=1 THEN data<=X“05”;datacnt:=datacnt+1; ELSIF datacnt=2 THEN data <= X“06”;datacnt:=datacnt+1; ELSIF datacnt=3 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=7 THEN data<=X“46”;datacnt:=datacnt+1; ELSIF datacnt=8 THEN data<=X“3a”;datacnt:=datacnt+1; ELSIF datacnt=9 THEN data<=X“31”;datacnt:=datacnt+1; ELSIF datacnt=10 THEN data<=X“30”;datacnt:=datacnt+1; ELSIF datacnt=11 THEN data<=X“4d”;datacnt:=datacnt+1; ELSIF datacnt=12 THEN data<=X“48”;datacnt:=datacnt+1; ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1;--顯示 cgrom 中指定的 ELSIF datacnt=14 THEN data<=X“5a”;datacnt:=datacnt+1; ELSE data<=X“20”;datacnt:=0;state <= set_addram2; END IF; WHEN set_addram2=>rs<='0';--設(shè)置 ADDRAM 地址 2 data<=“11000000”;state<=diaplay_cgrom; WHEN diaplay_cgrom=>rs<='1'; IF datacnt=0 THEN data<=X“4A”;datacnt:=datacnt+1; ELSIF datacnt=1 THEN data<=X“41”;datacnt:=datacnt+1; ELSIF datacnt=2 THEN data<=X“43”;datacnt:=datacnt+1; ELSIF datacnt=3 THEN data<=X“4B”;datacnt:=datacnt+1; ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=7 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=8 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=9 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=10 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=11 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1; ELSIF datacnt=12 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data2+48,8);datacnt:=datacnt+1; ELSIF datacnt=14 THEN data<=CONV_STD_LOGIC_VECTOR(data1+48,8);datacnt:=datacnt+1; ELSE data<=X“56”;datacnt:=0;state <= set_addram1; END IF; END CASE; --end if; when others =>null; end case; END IF;end process;END fwm; Choice4-1 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; --程序包 entity choice4_1 is --定義實(shí)體 port(s:in std_logic_vector(1 downto 0); --信號選擇端口s d1,d2: in std_logic_vector(7 downto 0);--d1d2d3d4分別連接四個(gè)波形發(fā)生模塊 y: out std_logic_vector(7 downto 0));--定義輸出信號端口 end choice4_1;architecture behav of choice4_1 is --結(jié)構(gòu)體 begin process(s) begin case s is --case when語句進(jìn)行信號位的選擇 when “01”=>y<=d1; when “11”=>y<=d2; when others=>null; end case;end process; --進(jìn)程結(jié)束 end behav; --結(jié)構(gòu)體結(jié)束 fangbo library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fangbo is port(clkf,rf:in std_logic;qf:out std_logic_vector(7 downto 0));end entity;architecture behav of fangbo is signal a:bit;begin process(clkf,rf)--計(jì)數(shù)分頻 variable cnt:integer range 0 to 256;begin if(rf='0')then a<='0';elsif clkf'event and clkf='1' then if cnt<255 then--進(jìn)行分頻 cnt:=cnt+1;else cnt:=0;a<=not a;end if;end if;end process;process(clkf,a)--信號輸出 begin if clkf'event and clkf='1' then if a='1' then qf<=“11111111”;else qf<=“00000000”;end if;end if;end process;end behav; sin library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sin is port(clksin,rsin:in std_logic;da:out BIT_vector(7 downto 0));end entity;architecture behav of sin is signal a:bit;begin process(clksin,rsin)--計(jì)數(shù)分頻 variable cnt:integer range 0 to 256;begin if(rsin='0')then a<='0';elsif clksin'event and clksin='1' then if cnt<4 then--進(jìn)行分頻 cnt:=cnt+1;else cnt:=0;a<=not a;end if;end if;end process;--process(clksin,a)process(a) variable tmp:std_logic_vector(7 downto 0);variable d:BIT_vector(7 downto 0);begin--if a='0' then--d:=“00000000”;--elsif clksin'event and clksin='1' then if a'event and a='1' then if tmp=“00111111” then tmp:=“00000000”;else tmp:=tmp+1;end if;case tmp is when “00000000”=>d:=“11111111”;when “00000001”=>d:=“11111110”;when “00000010”=>d:=“11111100”;when “00000011”=>d:=“11111001”;when “00000100”=>d:=“11110101”;when “00000101”=>d:=“11101111”;when “00000110”=>d:=“11101001”;when “00000111”=>d:=“11100001”;when “00001000”=>d:=“11011001”;when “00001001”=>d:=“11001111”;when “00001010”=>d:=“11000101”;when “00001011”=>d:=“10111010”;when “00001100”=>d:=“10101110”;when “00001101”=>d:=“10100010”;when “00001110”=>d:=“10010110”;when “00001111”=>d:=“10001010”;when “00010000”=>d:=“01111100”;when “00010001”=>d:=“01100000”;when “00010010”=>d:=“01100011”;when “00010011”=>d:=“01010111”;when “00010100”=>d:=“01001011”;when “00010101”=>d:=“01000000”;when “00010110”=>d:=“00110101”;when “00010111”=>d:=“00101011”;when “00011000”=>d:=“00100010”;when “00011001”=>d:=“00011010”;when “00011010”=>d:=“00010011”;when “00011011”=>d:=“00001101”;when “00011100”=>d:=“00001000”;when “00011101”=>d:=“00000001”;when “00011110”=>d:=“00000001”;when “00011111”=>d:=“00000000”;when “00100000”=>d:=“00000000”;when “00100001”=>d:=“00000001”;when “00100010”=>d:=“00000001”;when “00100011”=>d:=“00001000”;when “00100100”=>d:=“00001101”;when “00100101”=>d:=“00010011”;when “00100110”=>d:=“00011010”;when “00100111”=>d:=“00100010”;when “00101000”=>d:=“00101011”;when “00101001”=>d:=“00110101”;when “00101010”=>d:=“01000000”;when “00101011”=>d:=“01001011”;when “00101100”=>d:=“01010111”;when “00101101”=>d:=“01100011”;when “00101110”=>d:=“01100000”;when “00101111”=>d:=“01111100”;when “00110000”=>d:=“10001001”;when “00110001”=>d:=“10010110”;when “00110010”=>d:=“10100010”;when “00110011”=>d:=“10101110”;when “00110100”=>d:=“10111010”;when “00110101”=>d:=“11000101”;when “00110110”=>d:=“11011001”;when “00110111”=>d:=“11011001”;when “00111000”=>d:=“11100001”;when “00111001”=>d:=“11101001”;when “00111010”=>d:=“11101111”;when “00111011”=>d:=“11110101”;when “00111100”=>d:=“11111001”;when “00111101”=>d:=“11111100”;when “00111110”=>d:=“11111110”;when “00111111”=>d:=“11111111”;when others=>null;end case;end if;da<=d SRL 1;--幅度調(diào)整 end process;end behav; 頻率計(jì) 1、頻率產(chǎn)生器: library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity lpm_counter0 is port(clock: in std_logic;q: out std_logic_vector(26 downto 0));end lpm_counter0;architecture syn of lpm_counter0 is signal sub_wire0 : std_logic_vector(26 downto 0);component lpm_counter generic(lpm_direction : string; lpm_port_updown : string;lpm_type : string;lpm_width : natural);port(clock : in std_logic; q : out std_logic_vector(26 downto 0));end component;begin q <= sub_wire0(26 downto 0);lpm_counter_component : lpm_counter generic map(lpm_direction => “up”,lpm_port_updown => “port_unused”,lpm_type => “l(fā)pm_counter”,lpm_width => 27)port map(clock => clock,q => sub_wire0);end syn; 2、測頻控制信號發(fā)生器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl is port(clk:in std_logic;--1Hz信號 tsten:out std_logic;--計(jì)數(shù)器使能信號 clr_cnt:out std_logic;--計(jì)數(shù)器清零信號 load:out std_logic);--鎖存器輸出控制信號 end testpl;architecture art of testpl is signal div2clk:std_logic;begin process(clk)begin if clk'event and clk='1'then div2clk<=not div2clk;--div2clk為0.5Hz end if;end process;process(clk ,div2clk)begin if(clk='0'and div2clk='0')then clr_cnt<='1';--當(dāng)div2clk與clk同時(shí)為零時(shí)計(jì)數(shù)器清零 else clr_cnt<='0';--當(dāng)div2clk處于的高電平時(shí)計(jì)數(shù)器計(jì)數(shù) end if;end process;load<=not div2clk;--鎖存器輸出與計(jì)數(shù)器使能信號反相 tsten<=div2clk;end art; 3、有時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is port(clk,clr,en: in std_logic;--clk:計(jì)數(shù)器時(shí)鐘,clr:清零信號,en:計(jì)數(shù)使能信號 q: out std_logic_vector(3 downto 0);--q:4位計(jì)數(shù)結(jié)果輸出 c10: out std_logic);--計(jì)數(shù)進(jìn)位 end cnt10;architecture art of cnt10 is signal cqi: std_logic_vector(3 downto 0);begin process(clk,clr)begin if clr='1' then cqi<=“0000”;--當(dāng)輸入的clr_cnt為低電平1時(shí)清零 elsif clk'event and clk='1' then if en='1' then--當(dāng)輸入的tesen為高電平1時(shí)允許計(jì)數(shù) if(cqi<9)then cqi<=cqi+1;else cqi<=“0000”;--等于9則計(jì)數(shù)器清零 end if;--當(dāng)輸入的tesen為低電平0時(shí)禁止計(jì)數(shù),鎖定計(jì)數(shù)值 end if;end if;end process;--產(chǎn)生進(jìn)位 process(cqi)begin if cqi=“1001” then c10<='1';--當(dāng)加的9時(shí)產(chǎn)生進(jìn)位輸出 else c10<='0';end if;end process;q<=cqi;end art;4、16位鎖存器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b is port(load: in std_logic;--輸出鎖存控制信號 din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end reg16b;architecture art of reg16b is begin process(load,din)begin if load'event and load='1'then--load為高電平時(shí)teten為低電平,計(jì)數(shù)器禁止 dout<=din;--鎖存輸入的數(shù)據(jù) end if;end process;end art; 5、數(shù)碼管控制器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcom is port(clk:in std_logic;--數(shù)碼管掃描頻率 datain: in std_logic_vector(15 downto 0);--鎖存器輸入的16位信號 dataout: out std_logic_vector(3 downto 0);-輸出至譯碼器的4位信號 com: out std_logic_vector(3 downto 0));--輸出數(shù)碼管選擇信號 end ledcom;architecture art of ledcom is signal comclk: std_logic_vector(1 downto 0);begin--comclk同掃描頻率clk循環(huán)變化 process(clk)begin if rising_edge(clk)then if comclk>=3 then comclk <=“00”; else comclk<=comclk+1;end if;end if;end process;--數(shù)碼管選擇 process(comclk)begin case comclk is when “00” => com<=“1000”;when “01” => com<=“0100”;when “10” => com<=“0010”;when “11” => com<=“0001”;when others =>NULL;end case;end process;--對應(yīng)數(shù)碼管的輸出 process(comclk,datain)begin case comclk is when “11”=> dataout<=datain(3 downto 0);when “10”=> dataout<=datain(7 downto 4);when “01”=> dataout<=datain(11 downto 8);when “00”=> dataout<=datain(15 downto 12);when others =>NULL;end case;end process;end art; 6、七段數(shù)碼管的譯碼器 library IEEE;use IEEE.std_logic_1164.all;entity ymq is port(d_in: in std_logic_vector(3 downto 0);--數(shù)碼管控制器輸入四位信號 d_out: out std_logic_vector(7 downto 0));--輸出8位信號 end ymq;--第8位d_out[7]為逗號 architecture art of ymq is begin process(d_in)begin case d_in is--第8位為1高電平逗號不顯示 when “0000” => d_out<=“11000000”;--0 when “0001” => d_out<=“11111001”;--1 when “0010” => d_out<=“10100100”;--2 when “0011” => d_out<=“10110000”;--3 when “0100” => d_out<=“10011001”;--4 when “0101” => d_out<=“10010010”;--5 when “0110” => d_out<=“10000010”;--6 when “0111” => d_out<=“11111000”;--7 when “1000” => d_out<=“10000000”;--8 when “1001” => d_out<=“10010000”;--9 when others =>NULL;end case;end process;end art; 7、元件聲明及例化將各個(gè)元器件依據(jù)設(shè)計(jì)相連 library ieee;use ieee.std_logic_1164.all;entity lx is port(clk: in std_logic;led: out std_logic_vector(7 downto 0);ledc: out std_logic_vector(3 downto 0));end lx;architecture art of lx is component lpm_counter0--待調(diào)用的頻率生成器端口定義 PORT(clock: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR(26 DOWNTO 0));end component;--十進(jìn)制計(jì)數(shù)器 component cnt10--待調(diào)用的有時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器端口定義 port(clk,clr,en: in std_logic;q: out std_logic_vector(3 downto 0);c10: out std_logic);end component;--16位鎖存器 component reg16b--待調(diào)用的32位鎖存器端口定義 port(load: in std_logic;din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end component;--測頻控制器 component testpl--待調(diào)用的測頻控制信號發(fā)生器端口定義 port(clk:in std_logic;tsten:out std_logic;clr_cnt:out std_logic;load:out std_logic);end component;--數(shù)碼管選擇器 component ledcom--待調(diào)用的數(shù)碼管選擇器端口定義 port(clk:in std_logic;datain: in std_logic_vector(15 downto 0);dataout: out std_logic_vector(3 downto 0);com: out std_logic_vector(3 downto 0));end component;--譯碼器 component ymq--待調(diào)用的譯碼器端口定義 port(d_in: in std_logic_vector(3 downto 0);d_out: out std_logic_vector(7 downto 0));end component;signal clk1,clk2,clk3: std_logic;--clk1為1Hz信號,clk2為被測信號,clk3為數(shù)碼管掃描信號 signal tsten,clr,load: std_logic;signal c1,c2,c3,c4: std_logic;signal qout,rout: std_logic_vector(15 downto 0);signal datao: std_logic_vector(3 downto 0);begin u0:testpl port map(clk1,tsten,clr,load);u1:cnt10 port map(clk2,clr,tsten,qout(3 downto 0),c1);u2:cnt10 port map(c1,clr,tsten,qout(7 downto 4),c2);u3:cnt10 port map(c2,clr,tsten,qout(11 downto 8),c3);u4:cnt10 port map(c3,clr,tsten,qout(15 downto 12),c4);u5:reg16b port map(load,qout(15 downto 0),rout);u6:ledcom port map(clk3,rout,datao,ledc);u8:ymq port map(datao,led);u9:lpm_counter0 port map(clk,q(25)=>clk1,q(15)=>clk2,q(17)=>clk3);end art; 6.結(jié)果顯示 7.實(shí)習(xí)心得 貴州師范大學(xué)學(xué)生 實(shí)習(xí)報(bào)告 科目:EDA實(shí)習(xí) 專業(yè): 電氣工程及其自動化 班級: 10電氣 姓名: 李啟應(yīng) 學(xué)號: 101401010202 實(shí)驗(yàn)項(xiàng)目名稱:數(shù)字電子鐘的設(shè)計(jì) 實(shí)驗(yàn)項(xiàng)目性質(zhì):普通試驗(yàn) 所屬課程名稱:VHDL程序設(shè)計(jì) 一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)VHDL語言的一些基本特點(diǎn)。2 掌握VHDL程序的基本結(jié)構(gòu)。3掌握VHDL程序設(shè)計(jì)方法。要能夠用vhdl語言讀懂并編寫eda程序,對eda設(shè)計(jì)的總體框架能有較好的把握,掌握各模塊的調(diào)用方式。 二、實(shí)驗(yàn)內(nèi)容和要求 設(shè)計(jì)一個(gè)數(shù)字時(shí)鐘,顯示時(shí)(2位),分(2位),秒(2位),具體要求是:具有時(shí)分秒計(jì)數(shù)顯示功能,以24小時(shí)循環(huán)計(jì)時(shí);數(shù)碼管動態(tài)顯示時(shí),分,秒;具有清零功能。 在軟件工具平臺上,進(jìn)行VHDL語言的各模塊編程輸入、編譯實(shí)現(xiàn)和仿真驗(yàn)證。 三、實(shí)驗(yàn)主要儀器設(shè)備和材料 計(jì)算機(jī),開發(fā)環(huán)境MAX-PLUSII,ZY11EDA實(shí)驗(yàn)系統(tǒng),VHDL語言。 四、實(shí)驗(yàn)方法、步驟及結(jié)果測試 1、設(shè)計(jì)思路: 數(shù)字鐘的主體是計(jì)數(shù)器,它記錄并顯示接收到的秒脈沖個(gè)數(shù),其中秒和分位60進(jìn)制計(jì)數(shù)器,小時(shí)為24進(jìn)制計(jì)數(shù)器,分別產(chǎn)生3位BCD碼。BCD碼經(jīng)譯碼,驅(qū)動后接數(shù)碼顯示電路。 根據(jù)實(shí)驗(yàn)要求,將設(shè)計(jì)分為5個(gè)主要部分,時(shí)功能模塊、分功能模塊、秒功能模塊、掃描儀功能模塊和7段LED功能模塊。在時(shí)、分、秒模塊中,包括復(fù)位和預(yù)置數(shù),其主要思路如下: 秒鐘的模塊:設(shè)計(jì)一個(gè)60進(jìn)制的計(jì)數(shù)器,以clk為其時(shí)鐘信號,每60個(gè)clk后產(chǎn) 生一個(gè)進(jìn)位信號CF給分鐘模塊,作為分鐘進(jìn)程的響應(yīng)信號。秒鐘模塊VHDL程序見附錄1: 仿真波形如下: 封裝如下圖: 分鐘的模塊:同理于秒鐘的模塊,設(shè)計(jì)一個(gè)60進(jìn)制的計(jì)數(shù)器,以CFM為其時(shí)鐘信號,每60個(gè)CFM后產(chǎn)生一個(gè)進(jìn)位信號CFM給小時(shí)模塊,作為小時(shí)模塊進(jìn)程的響應(yīng)信號。分鐘模塊VHDL程序見附錄二: 仿真波形如下: 封裝如下圖: 小時(shí)的模塊:為24進(jìn)制計(jì)數(shù)器,在分的進(jìn)位信號CFM的激發(fā)下計(jì)數(shù),從0到23的時(shí)候產(chǎn)生一個(gè)信號CFH,全部清0,重新開始計(jì)時(shí)。小時(shí)模塊VHDL程序見附錄三: 仿真波形如下: 封裝如下圖: 掃描儀模塊:在掃描儀內(nèi)部,有一個(gè)3-8譯碼器的片選信號,當(dāng)3-8譯碼器的片選信號為000時(shí),片選信號選中7段LED模塊中的秒的個(gè)位,當(dāng)3-8譯碼器的片選信號為001時(shí),片選信號選中7段LED模塊中的秒的十位,當(dāng)3-8譯碼器的片選信號為010時(shí),片選信號選中7段LED模塊中的分的個(gè)位,當(dāng)3-8譯碼器的片選信號為011時(shí),片選信號選中7段LED模塊中的分的十位,當(dāng)3-8譯碼器的片選信號為100時(shí),片選信號選中7段LED模塊中的時(shí)的個(gè)位,當(dāng)3-8譯碼器的片選信號為101時(shí),片選信號選中7段LED模塊中的時(shí)的十位,就這樣動態(tài)掃描,當(dāng)輸入的時(shí)鐘信號頻率很高的時(shí)候,就形成了我們的時(shí)鐘。 掃描儀模塊VHDL程序見附錄四: 仿真波形如下: 封裝如下圖: 7段LED模塊:根據(jù)動態(tài)掃描儀的片選信號來依次點(diǎn)亮我們所需的時(shí)間。7段LED模塊VHDL程序見附錄五: 仿真波形如下: 封裝如下圖: 綜合以上5大模塊,把它們用線連接起來就得到我們的總的電路圖:如下圖所示: 其工作原理為:掃描儀3-8譯碼器的片選信號根據(jù)時(shí)分秒的輸入選中7段LED模塊,然后再由時(shí)分秒中產(chǎn)生的3位BCD碼來輸出秒的個(gè)位,十位、時(shí)的個(gè)位,十位、小時(shí)的個(gè)位,十位。 4.總結(jié): 在實(shí)驗(yàn)這兩周的時(shí)間里,我們做過DC觸發(fā)器、DQ觸發(fā)器、3-8譯碼器、二選一電路和四選一電路等,最后綜合做了數(shù)字時(shí)鐘電路,通過這次實(shí)習(xí),我對用VHDL來編程有了更深的了解,在要編程的時(shí)候,我學(xué)會了分模塊進(jìn)行,因?yàn)橐婚_始的時(shí)候設(shè)計(jì)一個(gè)時(shí)鐘系統(tǒng)比較麻煩,沒有分模塊之前總是會有差錯(cuò),而之后思路就會比較清晰,有明確的方案,在對照書本里的編程規(guī)則與語句,就完成了這次的設(shè)計(jì),總之就是獲益良多。附錄1:秒鐘模塊VHDL程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second is port(clk,reset:in std_logic;cf:out std_logic;second1_out:out std_logic_vector(3 downto 0);second10_out:out std_logic_vector(2 downto 0));end entity second;architecture one of second is signal second1n:std_logic_vector(3 downto 0);signal second10n:std_logic_vector(2 downto 0);begin second1_out<=second1n;second10_out<=second10n;process(clk,reset)begin if(reset='1')then second1n<=“0000”;second10n<=“000”;elsif(clk' event and clk='1')then if(second1n=“1001”)then 7 second1n<=“0000”;if(second10n=“101”)then second10n<=“000”;cf<='1';else second10n<=second10n+1;end if;else second1n<=second1n+1;end if;end if;end process;end architecture one;附錄二:分鐘模塊VHDL程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port(clk,reset:in std_logic;cf:out std_logic;minute1_out:out std_logic_vector(3 downto 0);minute10_out:out std_logic_vector(2 downto 0));end entity minute;architecture one of minute is signal minute1n:std_logic_vector(3 downto 0);signal minute10n:std_logic_vector(2 downto 0);begin minute1_out<=minute1n;minute10_out<=minute10n;process(clk,reset)begin if(reset='1')then minute1n<=“0000”;minute10n<=“000”;elsif(clk' event and clk='1')then if(minute1n=“1001”)then minute1n<=“0000”;if(minute10n=“101”)then minute10n<=“000”;cf<='1';else minute10n<=minute10n+1;end if;else minute1n<=minute1n+1;end if;end if;end process;end architecture one;附錄三:小時(shí)模塊VHDL程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk,reset:in std_logic;hour1_out:out std_logic_vector(3 downto 0);hour10_out:out std_logic_vector(1 downto 0));end entity hour;architecture one of hour is signal hour1n:std_logic_vector(3 downto 0);signal hour10n:std_logic_vector(1 downto 0);begin hour1_out<=hour1n;hour10_out<=hour10n;process(clk,reset)begin if(reset='1')then hour1n<=“0000”;hour10n<=“00”;elsif(clk' event and clk='1')then if(hour1n=“1001”or(hour1n=“0011”and hour10n=“0010”))then hour1n<=“0000”;if(hour10n=“10”)then hour10n<=“00”;else hour10n<=hour10n+1;end if;else hour1n<=hour1n+1;end if;end if;end process;end architecture one;附錄四:掃描儀模塊VHDL程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity saomiaoyi is port(clk:in std_logic;reset:in std_logic;second1,minute1,hour1:in std_logic_vector(3 downto 0);second_10,minute_10:in std_logic_vector(2 downto 0);hour_10:in std_logic_vector(1 downto 0);dataout:out std_logic_vector(3 downto 0);sel:out std_logic_vector(2 downto 0));end entity saomiaoyi;architecture one of saomiaoyi is signal count:std_logic_vector(2 downto 0);begin sel<=count;process(clk,reset)begin if(reset='1')then dataout<=“0000”;elsif(clk'event and clk='1')then if count>=“101” then count<=“000”;else count<=count+1;end if;end if;case count is when“000”=>dataout<=second1;when“001”=>dataout<='0'& second_10;when“010”=>dataout<=minute1;when“011”=>dataout<='0'& minute_10;when“100”=>dataout<=hour1;when others =>dataout<=“00”& hour_10;end case;end process;end architecture one; 附錄五:7段LED模塊VHDL程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY led_7 IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END entity led_7;ARCHITECTURE one OF led_7 IS BEGIN PROCESS(A)BEGIN CASE A(3 DOWNTO 0)IS WHEN “0000” => LED7S <= “0111111”;--X“3F” 0 WHEN “0001” => LED7S <= “0000110”;--X“06” 1 WHEN “0010” => LED7S <= “1011011”;--X“5B” 2 WHEN “0011” => LED7S <= “1001111”;--X“4F” 3 WHEN “0100” => LED7S <= “1100110”;--X“66” 4 WHEN “0101” => LED7S <= “1101101”;--X“6D” 5 WHEN “0110” => LED7S <= “1111101”;--X“7D” 6 WHEN “0111” => LED7S <= “0000111”;--X“07” 7 WHEN “1000” => LED7S <= “1111111”;--X“7F” 8 WHEN “1001” => LED7S <= “1101111”;--X“6F” 9 WHEN OTHERS => NULL;END CASE;END PROCESS;END ARCHITECTURE one; 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 目錄 引 言 (1)EDA簡介 (2)EDA的設(shè)計(jì)流程 第一章 實(shí)訓(xùn)目的 第二章 實(shí)訓(xùn)內(nèi)容 一、EDA 開發(fā)軟件Max+plus II 或Quartus II 1.1基本原理 1.2條件要求 1.3主要內(nèi)容 1.4實(shí)踐步驟與結(jié)果分析 (一)設(shè)計(jì)原理圖或VHDL源程序 1)原理圖 2)VHDL源程序 (二)器件及管腳邏分配圖 1)調(diào)試編譯與仿真波形 2)時(shí)序分析圖 1.5項(xiàng)目一的結(jié)論 二、4位全加器設(shè)計(jì) 2.1基本原理 2.2條件要求 2.3主要內(nèi)容 2.4方案及實(shí)現(xiàn)方法 2.5實(shí)踐步驟與結(jié)果分析 (一)設(shè)計(jì)1 位全加器 1)1 位全加器原理圖 2)1位全加器仿真波形 (二)四位全加器設(shè)計(jì) 1)四位全加器原理圖 2)器件及管腳邏分配圖 3)調(diào)試編譯與仿真波形 4)時(shí)序分析圖 (三)項(xiàng)目二的結(jié)論 三、8 線-3 線優(yōu)先編碼器 3.1基本原理 1、管腳 2、真值表 3.2條件要求 3.3主要內(nèi)容 3.4方案及實(shí)現(xiàn)方法 3.5實(shí)踐步驟與結(jié)果分析 (一)原理圖和VHDL程序 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 1)3-8譯碼器的原理圖 2)VHDL程序 (二)器件及管腳邏分配圖 (三)調(diào)試編譯與仿真波形 1、調(diào)試編譯 2、仿真波形 (四)時(shí)序分析圖 (五)項(xiàng)目三的結(jié)論 四、10 進(jìn)制計(jì)數(shù)器設(shè)計(jì) 4.1基本原理 1、管腳 2、真值表 4.2條件要求 4.3主要內(nèi)容 4.4方案及實(shí)現(xiàn)方法 4.5實(shí)踐步驟與結(jié)果分析 (一)原理圖和VHDL程序 1)10 進(jìn)制計(jì)數(shù)器 2)VHDL程序 (二)器件及管腳邏分配圖 (三)調(diào)試編譯與仿真波形 1、調(diào)試編譯 2、仿真波形 (四)時(shí)序分析圖 (五)項(xiàng)目四的結(jié)論 五、8 位循環(huán)移位寄存器 5.1基本原理 1、管腳 2、真值表 5.2條件要求 5.3主要內(nèi)容 5.4方案及實(shí)現(xiàn)方法 5.5實(shí)踐步驟與結(jié)果分析 (一)原理圖和VHDL程序 1)8 位循環(huán)移位寄存器 2)VHDL程序 (二)器件及管腳邏分配圖 (三)調(diào)試編譯與仿真波形 1、調(diào)試編譯 2、仿真波形 (四)時(shí)序分析圖 (五)項(xiàng)目三的結(jié)論 第三章 結(jié) 論 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 引 言 (1)EDA簡介 電子技術(shù)的迅猛發(fā)展,高新技術(shù)日新月異。傳統(tǒng)的電子技術(shù)設(shè)計(jì)方法,以不能幫助我們更好的、高效的完成設(shè)計(jì)任務(wù)。所以我們需要更好的工具來幫助我們完成設(shè)計(jì)任務(wù)。 EDA技術(shù)是指以計(jì)算機(jī)為工作平臺,融合應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理及智能化技術(shù),進(jìn)行電子產(chǎn)品自動化設(shè)計(jì)的一門新技術(shù)。 EDA技術(shù)作為現(xiàn)代電子設(shè)計(jì)技術(shù)的核心,依賴于計(jì)算機(jī),在EDA工具軟件平臺上,對以硬件描述語言為邏輯描述手段完成設(shè)計(jì)文件,自動地完成邏輯編譯、邏輯化簡、邏輯綜合、布局布線,以及邏輯優(yōu)化和仿真測試,直至實(shí)現(xiàn)既定的電子電路的功能。 在硬件方面,EDA技術(shù)融合了大規(guī)模集成電路制造技術(shù)、集成電路板圖設(shè)計(jì)技術(shù)、可編程器件編程技術(shù)、自動測試技術(shù)等;在計(jì)算機(jī)輔助工程方面融合了計(jì)算機(jī)輔助設(shè)計(jì)、計(jì)算機(jī)輔助制造、計(jì)算機(jī)輔助測試、計(jì)算機(jī)輔助分析、計(jì)算機(jī)輔助工程技術(shù)以及多種計(jì)算機(jī)語言的設(shè)計(jì)概念;在現(xiàn)代電子學(xué)方面容納了諸如計(jì)算機(jī)設(shè)計(jì)技術(shù)、電子線路設(shè)計(jì)理論、數(shù)字信息處理技術(shù)、數(shù)字系統(tǒng)建模和優(yōu)化技術(shù)以及基于微波技術(shù)的長線技術(shù)理論。 可以說,EDA技術(shù)打破了軟件設(shè)計(jì)和硬件設(shè)計(jì)間的壁壘,是一門綜合性學(xué)科,一種多方位技能技術(shù)。它將設(shè)計(jì)效率和產(chǎn)品性能合二為一,代表了電子設(shè)計(jì)技術(shù)和電子應(yīng)用技術(shù)的發(fā)展方向。 (2)EDA的設(shè)計(jì)流程 ? 編輯輸入 1)文本輸入。在EDA工具軟件的文本編輯見面上,輸入用某種硬件語言表 述的電路設(shè)計(jì)文本。 2)原理圖輸入。在EDA工具軟件的圖形編輯界面上,繪制能完成預(yù)定功能的電路原理圖。 3)狀態(tài)圖輸入。依據(jù)電路的控制條件和狀態(tài)轉(zhuǎn)換的因果關(guān)系,在EDA工具軟件的狀態(tài)圖編輯界面上繪制時(shí)序電路的狀態(tài)流程圖。 ? 波形圖輸入 在EDA工具軟件的波形圖編輯界面上,繪制電路輸入輸出信號間的波形關(guān)系,然后由EDA編譯器據(jù)此完成電路設(shè)計(jì)。 ? 綜合 綜合是將由硬件描述語言表述的電路行為表述轉(zhuǎn)換為低級的、與可編程邏輯器件基本結(jié)構(gòu)相映射的網(wǎng)表文件或電路連接圖。 ? 適配 適配是為了將綜合器產(chǎn)生的網(wǎng)表文件裝配于指定的目標(biāo)器中,而產(chǎn)生最終的編程文件。 ? 功能仿真與時(shí)序仿真 1)功能仿真是指針對文本設(shè)計(jì)、原理圖設(shè)計(jì)及其它設(shè)計(jì)方法的邏輯功能進(jìn) 2)行測試模擬,以便了解所設(shè)計(jì)電路實(shí)現(xiàn)的功能是否符合要求。 3)時(shí)序仿真的結(jié)果接近真實(shí)器件的運(yùn)行特性。 ? 編程下載 把適配后生成的編程文件通過編程器或編程電纜載入目標(biāo)可編程邏輯器件,以便進(jìn)行硬件驗(yàn)證。 ? 硬件測試 對含有載入了編程文件的可編程邏輯器件的硬件系統(tǒng)進(jìn)行統(tǒng)一的測試。 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 第一章 實(shí)訓(xùn)目的 1)掌握MAX+PLUSⅡ或Quartus II 的安裝與使用方法,EDA 的開發(fā)流程及相關(guān)分析綜合方法。2)復(fù)習(xí)加法器的原理,掌握加法器的設(shè)計(jì)實(shí)現(xiàn)方法,設(shè)計(jì)實(shí)現(xiàn)數(shù)字系統(tǒng)設(shè)計(jì)中常用的4位全加器,在此基礎(chǔ)上進(jìn)一步熟悉MAX+PLUSⅡ或Quartus II 軟件的使用方法,熟練掌握EDA的圖形編程方法、開發(fā)流程、以及組合邏輯電路的設(shè)計(jì)、分析、綜合、仿真方法。 3)復(fù)習(xí)編碼器的原理,掌握編碼器的設(shè)計(jì)實(shí)現(xiàn)方法,設(shè)計(jì)實(shí)現(xiàn)數(shù)字系統(tǒng)設(shè)計(jì)中常用的8線-3 線優(yōu)先編碼器,逐步學(xué)會熟練運(yùn)用MAX+PLUSⅡ或Quartus II 軟件,熟悉EDA 的VHDL程序設(shè)計(jì)方法、學(xué)習(xí)掌握組合邏輯電路的VHDL 描述方法,進(jìn)一步掌握應(yīng)用EDA 常用工具進(jìn)行組合邏輯電路的設(shè)計(jì)、分析、綜合、仿真等的技巧。 4)復(fù)習(xí)計(jì)數(shù)器的原理,掌握計(jì)數(shù)器的設(shè)計(jì)實(shí)現(xiàn)方法,設(shè)計(jì)實(shí)現(xiàn)數(shù)字系統(tǒng)設(shè)計(jì)中常用的10進(jìn)制計(jì)數(shù)器,逐步學(xué)會熟練運(yùn)用MAX+PLUSⅡ或Quartus II 軟件,熟悉EDA 的VHDL 程序設(shè)計(jì)方法、學(xué)會使用信號升沿、降沿、VHDL 的敏感量表等內(nèi)容,掌握時(shí)序邏輯電路的VHDL描述方法,步掌握應(yīng)用EDA 常用工具軟件進(jìn)行時(shí)序邏輯電路的設(shè)計(jì)、分析、綜合、仿真等的方法與技巧。 5)復(fù)習(xí)循環(huán)移位寄存器的原理與功能,學(xué)習(xí)掌握循環(huán)移位寄存器的設(shè)計(jì)實(shí)現(xiàn)方法,設(shè)計(jì)實(shí)現(xiàn)數(shù)字系統(tǒng)設(shè)計(jì)中常用的8 位循環(huán)移位寄存器,逐步學(xué)會熟練運(yùn)用MAX+PLUSⅡ或QuartusII 軟件,熟悉EDA 的VHDL 程序設(shè)計(jì)方法、學(xué)會使用信號升沿、降沿、VHDL 的敏感量表等內(nèi)容,掌握時(shí)序邏輯電路的VHDL 描述方法,掌握應(yīng)用EDA 常用工具軟件進(jìn)行時(shí)序邏輯電路的設(shè)計(jì)、分析、綜合、仿真等的方法與技巧。 6)初步掌握VHDL語言和原理圖的設(shè)計(jì)輸入,編譯,仿真和調(diào)試過程,理解VHDL語言的基本特點(diǎn)包括結(jié)構(gòu)、語法、數(shù)據(jù)類型等。 第二章 實(shí)訓(xùn)內(nèi)容 一、EDA 開發(fā)軟件Max+plus II 或Quartus II 1.1基本原理 根據(jù)EDA 的設(shè)計(jì)流程:設(shè)計(jì)輸入→編譯→器件選擇→管腳分配→設(shè)計(jì)仿真→時(shí)序分析→編程下載,在熟悉EDA 開發(fā)軟件Max+plus II 或Quartus II 界面操作基礎(chǔ)上,使用軟件提供的編輯、編譯、仿真等工具,分析所設(shè)計(jì)的系統(tǒng)。 1.2條件要求 1)計(jì)算機(jī)及操作系統(tǒng) 2)MAX+Plus II 或Quartus II 軟件 3)編程電纜(可選) 1.3主要內(nèi)容 1.設(shè)計(jì)輸入方法,包括圖形輸入、文本輸入等 2.設(shè)計(jì)編譯 3.器件選擇及管腳分配 4.設(shè)計(jì)仿真 5.時(shí)序分析 6.編程下載 1.4實(shí)踐步驟與結(jié)果分析 (一)設(shè)計(jì)原理圖或VHDL源程序 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 1)原理圖 我設(shè)計(jì)了一個(gè)半加器,A和B是輸入端,C是進(jìn)位輸出,D是加法輸出 以上為采用圖形輸入法完成的一個(gè)二輸入半加器電路 2)VHDL源程序 O<=A XOR B;//A與B異或 C<=A AND B;//A與B相與 (二)器件及管腳邏分配圖203130705岳慧慧 5 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 與門的兩個(gè)輸入A 和B 分配給管腳3 與2,輸出C分配給管腳44,輸出O分配給管腳43,所選器件為EPM3032ALC44-4。 (三)調(diào)試編譯與仿真波形 1)調(diào)試編譯 203130705岳慧慧 6 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 編譯結(jié)果正確,無錯(cuò)誤,但是有一個(gè)警告。 2)仿真波形 此處,我設(shè)計(jì)A輸入信號為100ns/每格的時(shí)鐘脈沖,B輸入信號為300ns/每格的時(shí)鐘脈沖。 仿真波形如下圖所示: 從仿真波形可以看出,輸入輸出結(jié)果滿足表達(dá)式O=A XOR B、C=A AND B,亦即所設(shè)203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 計(jì)電路功能達(dá)到設(shè)計(jì)要求。 (四)時(shí)序分析圖 此處,我進(jìn)行Classic Timing Analyzer 時(shí)序分析,可以得到A、B、C、D四個(gè)波形的信號到達(dá)時(shí)間都是3.5ns,所以仿真波形圖上不存在毛刺,很完美。 1.5項(xiàng)目一的結(jié)論 我掌握了MAX+PLUSⅡ或Quartus II 的安裝與使用方法,EDA 的開發(fā)流程及相關(guān)分析綜合方法,在此基礎(chǔ)上進(jìn)一步熟悉MAX+PLUSⅡ或Quartus II 軟件的使用方法,熟練掌握EDA的圖形編程方法、開發(fā)流程、以及組合邏輯電路的設(shè)計(jì)、分析、綜合、仿真方法。同時(shí)復(fù)習(xí)加法器的原理,掌握加法器的設(shè)計(jì)實(shí)現(xiàn)方法,我完成的主要工作是設(shè)計(jì)了數(shù)字系統(tǒng)設(shè)計(jì)中常用的一個(gè)半加器。A和B是半加器輸入,C是半加器的進(jìn)位輸出,D是A加B的結(jié)果輸出,并且利用波形仿真驗(yàn)證VHDL程序和原理圖的正確性。得出的結(jié)論是根據(jù)波形圖結(jié)果,波形符合邏輯關(guān)系,無毛刺,十分完美地實(shí)現(xiàn)二輸入半加器。 二、4位全加器設(shè)計(jì) 2.1基本原理 位全加器的管腳如下圖所示: 其中CIN 表示輸入進(jìn)位位,COUT 表示輸出進(jìn)位位,輸入A 和B 分別表示加數(shù)和被加數(shù)。輸出SUM=A+B+CIN,當(dāng)SUM 大于255 時(shí),COUT 置‘1’。 4位全加器可以看做四個(gè)1位全加器級聯(lián)而成,首先采用基本邏輯門設(shè)計(jì)一位全加器,而后通過多個(gè)1位全加器級聯(lián)實(shí)現(xiàn)4位全加器。其中,其中C1表示輸入進(jìn)位位,C0表示輸出進(jìn)位位,輸入A和B分別表示加數(shù)和被加數(shù)。S為輸出和,其功能可用布爾代數(shù)式表示為: S=A+B+C1 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 首先根據(jù)一位全加器的布爾代數(shù)式應(yīng)用基本邏輯門設(shè)計(jì)一位全加器,而后仿真驗(yàn)證一位全加器設(shè)計(jì),準(zhǔn)確無誤后生成元件,供4位全加器設(shè)計(jì)用。將4個(gè)1位全加器級聯(lián)構(gòu)成四位全加器。 2.2條件要求 1.計(jì)算機(jī)及操作系統(tǒng) 2.MAX+Plus II 或Quartus II 軟件 3.編程電纜(可選) 2.3主要內(nèi)容 根據(jù)所學(xué)相關(guān)知識,運(yùn)用MAX+PLUS II 或Quartus II 軟件的圖形輸入方法,實(shí)現(xiàn)4位全加器設(shè)計(jì)。首先給出設(shè)計(jì)原理并提出實(shí)現(xiàn)方案,經(jīng)指導(dǎo)教師同意后,通過設(shè)計(jì)輸入、編譯綜合、仿真驗(yàn)證等過程完成并驗(yàn)證設(shè)計(jì)。 1.設(shè)計(jì)輸入方法,包括圖形輸入、文本輸入等 2.設(shè)計(jì)編譯 3.器件選擇及管腳分配 4.設(shè)計(jì)仿真 5.時(shí)序分析 6.編程下載 2.4方案及實(shí)現(xiàn)方法 設(shè)計(jì)過程中可以首先采用基本邏輯門設(shè)計(jì)1 位全加器,而后通過多個(gè)1 位全加器級聯(lián)實(shí)現(xiàn)4 位全加器,也可以根據(jù)輸出與輸入的邏輯關(guān)系寫出其布爾代數(shù)式,根據(jù)布爾代數(shù)式用基本邏輯門實(shí)現(xiàn)全加器。 2.5實(shí)踐步驟與結(jié)果分析 (一)設(shè)計(jì)1 位全加器 1)1 位全加器原理圖 我設(shè)計(jì)了一位全加器,A和B是輸入端,C1是進(jìn)位輸入端,C0是進(jìn)位輸出端,S是全加器輸出端。 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 以上為采用圖形輸入法完成的一個(gè)一位全加器電路。 2)1位全加器仿真波形 仿真結(jié)果如圖,1位全加器設(shè)計(jì)成功。 (二)四位全加器設(shè)計(jì) 與門的兩個(gè)輸入A 和B 分配給管腳3 與2,輸出C分配給管腳44,輸出O分配給管腳43,所選器件為EPM3032ALC44-4。 1)四位全加器原理圖 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 2)器件及管腳邏分配圖 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 管腳分配情況如圖,所選器件為EPM3032ALC44-4。 3)調(diào)試編譯與仿真波形 1.調(diào)試編譯 編譯結(jié)果正確,無錯(cuò)誤,但是有一個(gè)警告。 分析可得,通過二輸入與門,非門,或門,輸出的S為兩者之和,C0為輸出進(jìn)位。仿真結(jié)果與全加器真值表相同,四位全加器設(shè)計(jì)成功。 2.仿真波形 仿真波形如下圖所示: 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 當(dāng)A3A2A1A0=0000,B3B2B1B0=0000時(shí),S3S2S1S0=0000 ;當(dāng)A3A2A1A0=0101,B3B2B1B0=1100時(shí),S3S2S1S0=0001,其他時(shí)刻波形也與全加器功能相符,全加器設(shè)計(jì)成功。 從仿真波形可以看出,輸入輸出結(jié)果滿足表達(dá)式O=A XOR B、C=A AND B,亦即所設(shè)計(jì)電路功能達(dá)到設(shè)計(jì)要求。 4)時(shí)序分析圖 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 此處,我進(jìn)行Classic Timing Analyzer 時(shí)序分析,可以得到A、B、C1、C0、S五個(gè)端口的信號到達(dá)時(shí)間,同步邏輯性能分析后可知仿真波形圖上不存在毛刺,滿足四位全加器的設(shè)計(jì)要求。 (三)項(xiàng)目二的結(jié)論 我掌握了EDA 的開發(fā)流程及相關(guān)分析綜合方法,在此基礎(chǔ)上進(jìn)一步熟悉MAX+PLUSⅡ或Quartus II 軟件的使用方法,熟練掌握EDA的圖形編程方法、開發(fā)流程、以及組合邏輯電路的設(shè)計(jì)、分析、綜合、仿真方法。同時(shí)復(fù)習(xí)加法器的原理,掌握加法器的設(shè)計(jì)實(shí)現(xiàn)方法,我完成的主要工作是設(shè)計(jì)了數(shù)字系統(tǒng)設(shè)計(jì)中常用的一個(gè)半加器。A和B是全加器加數(shù)和被加數(shù),C1是全加器的進(jìn)位輸入,C0是全加器的進(jìn)位輸出,S是A加B的結(jié)果輸出,并且利用波形仿真驗(yàn)證原理圖的正確性。得出的結(jié)論是根據(jù)波形圖結(jié)果,波形符合邏輯關(guān)系,無毛刺,十分完美地實(shí)現(xiàn)一位全加器。 三、8 線-3 線優(yōu)先編碼器 3.1基本原理 1、管腳 線-3 線優(yōu)先編碼器的管腳如圖: 其中IN 表示輸入編碼位,Sel 為片選信號,Y 表示輸出編碼值,YS 與YEX 表示器件狀態(tài),“11”表示器件未選中,“01”表示無鍵按下,“10”表示器件工作態(tài)。 2、真值表 8-3 編碼器的真值表如下: 3.2條件要求 1.計(jì)算機(jī)及操作系統(tǒng) 2.MAX+Plus II 或Quartus II 軟件 3.編程電纜(可選) 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 3.3主要內(nèi)容 1.根據(jù)所學(xué)相關(guān)知識,運(yùn)用MAX+PLUS II 或Quartus II 軟件的文本文件輸入方法,編寫VHDL 程序,實(shí)現(xiàn)8-3 優(yōu)先編碼器的設(shè)計(jì)。首先給出設(shè)計(jì)原理并提出實(shí)現(xiàn)方案論證,經(jīng)指導(dǎo)教師同意后,通過設(shè)計(jì)輸入、編譯綜合、仿真驗(yàn)證等過程完成并驗(yàn)證設(shè)計(jì)。設(shè)計(jì)輸入方法,包括圖形輸入、文本輸入等 2.設(shè)計(jì)編譯 3.器件選擇及管腳分配 4.設(shè)計(jì)仿真 5.時(shí)序分析 6.編程下載 3.4方案及實(shí)現(xiàn)方法 8-3 優(yōu)先編碼器的VHDL 描述有多種方法,設(shè)計(jì)過程中可以根據(jù)真值表采用case?when語句、with?select 語句、if?then 結(jié)構(gòu)等多種手段實(shí)現(xiàn),也可以根據(jù)真值表分析輸入輸出間的邏輯關(guān)系,根據(jù)邏輯關(guān)系寫出其布爾表達(dá)式,根據(jù)布爾代數(shù)式調(diào)用基本邏輯門元件實(shí)現(xiàn)8-3 優(yōu)先編碼器,詳細(xì)方案與方法略。 3.5實(shí)踐步驟與結(jié)果分析 (一)原理圖和VHDL程序 1)3-8譯碼器的原理圖 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 以上為采用圖形輸入法完成的一個(gè)3-8優(yōu)先譯碼器。 2)VHDL程序 8-3優(yōu)先編碼器的VHDL描述有多種方法,設(shè)計(jì)過程中可以根據(jù)真值表采用case?when語句、with?select語句、if?then結(jié)構(gòu)等多種手段實(shí)現(xiàn),也可以根據(jù)真值表分析輸入輸出間的邏輯關(guān)系,根據(jù)邏輯關(guān)系寫出其布爾表達(dá)式,根據(jù)布爾代數(shù)式調(diào)用基本邏輯門元件實(shí)現(xiàn)8-3優(yōu)先編碼器。本實(shí)驗(yàn)中,我根據(jù)真值表用if-then結(jié)構(gòu)實(shí)現(xiàn)8-3優(yōu)先編碼器。 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 (二)器件及管腳邏分配圖 管腳分配情況如圖,所選器件為EPM3032ALC44-4。 (三)調(diào)試編譯與仿真波形 1、調(diào)試編譯 編譯結(jié)果正確,無錯(cuò)誤,但是有兩個(gè)警告。 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 2、仿真波形 8線-3線優(yōu)先編碼器的仿真波形如下圖所示: 當(dāng)3-8譯碼器的片選信號為000時(shí),片選信號選中輸出的個(gè)位,當(dāng)3-8譯碼器的片選信號為001時(shí),片選信號選中輸出的十位,當(dāng)3-8譯碼器的片選信號為010時(shí),片選信號選中輸出的個(gè)位,當(dāng)3-8譯碼器的片選信號為011時(shí),片選信號選中輸出的十位,當(dāng)3-8譯碼器的片選信號為100時(shí),片選信號選中輸出的個(gè)位,當(dāng)3-8譯碼器的片選信號為101時(shí),片選信號選中輸出的十位,就這樣動態(tài)掃描,當(dāng)輸入的時(shí)鐘信號頻率很高的時(shí)候,就形成了我們的時(shí)鐘。 從仿真波形可以看出,輸入輸出結(jié)果滿足所設(shè)計(jì)電路功能,符合前文真值表,3-8優(yōu)先編碼器達(dá)到設(shè)計(jì)要求。 (四)時(shí)序分析圖 203130705岳慧慧 18 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 此處,我進(jìn)行Classic Timing Analyzer 時(shí)序分析,可以得到輸入輸出端口的信號到達(dá)時(shí)間都是4.5ns,同步邏輯性能分析后可知仿真波形圖上不存在毛刺,滿足3-8優(yōu)先編碼器的設(shè)計(jì)要求。 (五)項(xiàng)目三的結(jié)論 我掌握了EDA 的開發(fā)流程及相關(guān)分析綜合方法,在此基礎(chǔ)上進(jìn)一步熟悉MAX+PLUSⅡ或Quartus II 軟件的使用方法,熟練掌握EDA的圖形編程方法、開發(fā)流程、以及組合邏輯電路的設(shè)計(jì)、分析、綜合、仿真方法。同時(shí)復(fù)習(xí)加法器的原理,掌握加法器的設(shè)計(jì)實(shí)現(xiàn)方法,我完成的主要工作是設(shè)計(jì)了數(shù)字系統(tǒng)設(shè)計(jì)中常用的一個(gè)3-8優(yōu)先編碼器,并且利用波形仿真驗(yàn)證VHDL程序和原理圖的正確性。得出的結(jié)論是根據(jù)波形圖結(jié)果,波形符合邏輯關(guān)系,無毛刺,十分完美地實(shí)現(xiàn)3-8優(yōu)先編碼器的功能。 我發(fā)現(xiàn)用VHDL硬件描述語言的形式來進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大地減少了電路設(shè)計(jì)時(shí)間和可能發(fā)生的錯(cuò)誤,降低了開發(fā)成本,這種設(shè)計(jì)方法必將在未來的數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮越來越重要的作用。 附:參考程序 LIBRARY IEEE;ENTITY ENCODER IS USE IEEE.STD_LOGIC_1164.ALL;PORT(I:IN STD_LOGIC_VECTOR(7 USE IEEE.STD_LOGIC_UNSIGNED.ALL;DOWNTO 0);203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 SEL: IN STD_LOGIC;Y : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);YS,YEX : INOUT STD_LOGIC);END ENCODER;ARCHITECTURE sample OF ENCODER IS BEGIN P1:PROCESS(I,SEL)BEGIN if SEL='1' then Y <=“111”;YS <='1';YEX<='1';elsif I(7)='0' then Y <=“000”;YS <='1';YEX<='0';elsif I(6)='0' then Y<=“001”;YS <='1';YEX<='0';elsif I(5)='0' then Y<=“010”;YS <='1';YEX<='0';elsif I(4)='0' then Y<=“011”; YS <='1';YEX<='0'; elsif I(3)='0' then Y<=“100”;YS <='1';YEX<='0'; elsif I(2)='0' then Y<=“101”;YS <='1';YEX<='0'; elsif I(1)='0' then Y<=“110”;YS <='1';YEX<='0'; elsif I(0)='0' then Y<=“111”;YS <='1';YEX<='0'; elsif I=“11111111” then Y<=“111”;YS <='0';YEX<='1';else Y<=“ZZZ”;end if; END PROCESS P1;END sample; 四、10 進(jìn)制計(jì)數(shù)器設(shè)計(jì) 4.1基本原理 1、管腳 進(jìn)制計(jì)數(shù)器的管腳如圖: 其中IN 表示輸入編碼位,Sel 為片選信號,Y 表示輸出編碼值,YS 與YEX 表示器件狀態(tài),“11”表示器件未選中,“01”表示無鍵按下,“10”表示器件工作態(tài)。 2、真值表 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 進(jìn)制計(jì)數(shù)器的真值表如下: 計(jì)數(shù)開始,計(jì)數(shù)器從計(jì)數(shù)初值開始做加計(jì)數(shù)或減計(jì)數(shù)。加計(jì)數(shù)時(shí),計(jì)數(shù)到‘9’后,再來一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器從‘0’開始。重新啟動加計(jì)數(shù);減計(jì)數(shù)時(shí),計(jì)數(shù)到‘0’后,再來一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器從‘10’開始,重新啟動減計(jì)數(shù)。 4.2條件要求 1.計(jì)算機(jī)及操作系統(tǒng) 2.MAX+Plus II 或Quartus II 軟件 3.編程電纜(可選) 4.3主要內(nèi)容 ① 根據(jù)所學(xué)相關(guān)知識,運(yùn)用MAX+PLUS II 或Quartus II 軟件的文本文件輸入方法,編寫VHDL 程序,實(shí)現(xiàn)10 進(jìn)制計(jì)數(shù)器的設(shè)計(jì)。首先給出設(shè)計(jì)原理并提出實(shí)現(xiàn)方案論證,經(jīng)指導(dǎo)教師同意后,通過設(shè)計(jì)輸入、編譯綜合、仿真驗(yàn)證等過程完成并驗(yàn)證設(shè)計(jì)。設(shè)計(jì)編譯 ② 器件選擇及管腳分配 ③ 設(shè)計(jì)仿真 ④ 時(shí)序分析 ⑤ 編程下載 4.4方案及實(shí)現(xiàn)方法 進(jìn)制計(jì)數(shù)器的VHDL 描述有多種方法,設(shè)計(jì)過程中可以采用計(jì)數(shù)脈沖CP 作為敏感量,CP 的每個(gè)上升沿,計(jì)數(shù)值Q 加‘1’或減‘1’,加到‘9’后回‘0’或減到‘0’后回‘9’,語句可采用case?when、with?select、if?then 以及加減運(yùn)算等多種結(jié)構(gòu)實(shí)現(xiàn)。也可以首先設(shè)計(jì)基本的觸發(fā)器、鎖存器等元件,而后通過元件的互聯(lián)實(shí)現(xiàn),詳細(xì)方案與方法略。 4.5實(shí)踐步驟與結(jié)果分析 (一)原理圖和VHDL程序 1)10 進(jìn)制計(jì)數(shù)器 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 以上為采用圖形輸入法完成的一個(gè)3-8優(yōu)先譯碼器。 2)VHDL程序 8-3優(yōu)先編碼器的VHDL描述有多種方法,設(shè)計(jì)過程中可以根據(jù)真值表采用case?when語句、with?select語句、if?then結(jié)構(gòu)等多種手段實(shí)現(xiàn),也可以根據(jù)真值表分析輸入輸出間的邏輯關(guān)系,根據(jù)邏輯關(guān)系寫出其布爾表達(dá)式,根據(jù)布爾代數(shù)式調(diào)用基本邏輯門元件實(shí)現(xiàn)8-3優(yōu)先編碼器。本實(shí)驗(yàn)中,我根據(jù)真值表用if-then結(jié)構(gòu)實(shí)現(xiàn)8-3優(yōu)先編碼器。 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 (二)器件及管腳邏分配圖 管腳分配情況如圖,所選器件為EPM3032ALC44-4。 (三)調(diào)試編譯與仿真波形 1、調(diào)試編譯 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 編譯結(jié)果正確,無錯(cuò)誤,但是有一個(gè)警告。 2、仿真波形 進(jìn)制計(jì)數(shù)器的仿真波形如下圖所示: 從仿真波形可以看出,輸入輸出結(jié)果滿足所設(shè)計(jì)電路功能,符合前文真值表,10 進(jìn)制計(jì)數(shù)器達(dá)到設(shè)計(jì)要求。 (四)時(shí)序分析圖 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 此處,我進(jìn)行Classic Timing Analyzer 時(shí)序分析,可以得到輸入輸出端口的信號到達(dá)時(shí)間都是3.0ns,同步邏輯性能分析后可知仿真波形圖上不存在毛刺,滿足10 進(jìn)制計(jì)數(shù)器的設(shè)計(jì)要求。 (五)項(xiàng)目四的結(jié)論 我熟練掌握了EDA的圖形編程方法、開發(fā)流程、以及組合邏輯電路的設(shè)計(jì)、分析、綜合、仿真方法。我完成的主要工作是設(shè)計(jì)了數(shù)字系統(tǒng)設(shè)計(jì)中常用的一個(gè)10 進(jìn)制計(jì)數(shù)器,并且利用波形仿真驗(yàn)證VHDL程序和原理圖的正確性。得出的結(jié)論是根據(jù)波形圖結(jié)果,波形符合邏輯關(guān)系,無毛刺,十分完美地實(shí)現(xiàn)10 進(jìn)制計(jì)數(shù)器的功能。 我發(fā)現(xiàn)用VHDL硬件描述語言的形式來進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大地減少了電路設(shè)計(jì)時(shí)間和可能發(fā)生的錯(cuò)誤,降低了開發(fā)成本,這種設(shè)計(jì)方法必將在未來的數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮越來越重要的作用。 附:參考程序 LIBRARY IEEE;if UD='0' then USE IEEE.STD_LOGIC_1164.ALL;if TMP=“1001” then USE IEEE.STD_LOGIC_UNSIGNED.ALL;TMP<=“0000”;ENTITY counter IS c<='1';PORT(D : IN STD_LOGIC_VECTOR(3 else DOWNTO 0);TMP<=TMP+1;UD : IN STD_LOGIC;c<='0';LD : IN STD_LOGIC;end if;CP : IN STD_LOGIC;elsif UD='1' then STA: IN STD_LOGIC;if TMP=“0000” then C : OUT STD_LOGIC;TMP<=“1001”;Q : OUT STD_LOGIC_VECTOR(3 DOWNTO c<='1';0));else END counter;TMP<=TMP-1;ARCHITECTURE sample OF counter IS c<='0';SIGNAL TMP:STD_LOGIC_VECTOR(3 end if;DOWNTO 0);end if;BEGIN elsif STA='1' then P1:PROCESS(CP,STA,LD,UD)TMP<=TMP;BEGIN end if;if LD='0' then end if;TMP<=D;END PROCESS P1;elsif CP'EVENT AND CP='0' then Q<=TMP;if STA='0' then END sample; 五、8 位循環(huán)移位寄存器 5.1基本原理 1、管腳 位循環(huán)移位寄存器的管腳如圖: 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 其中D 表示輸入的初始值,Sta 為開始移位信號,DOUT 表示當(dāng)前數(shù)值;LD 表示預(yù)設(shè)計(jì)數(shù)值,LD 為“1”,初始計(jì)數(shù)值打入器件;LR 表示移位方向,LR 為‘0’,循環(huán)右移位,LR 為‘1’,循環(huán)左移位;CP 為移位脈沖。 2、真值表 位循環(huán)移位寄存器的真值表如下: 移位開始,循環(huán)左移時(shí),CP 上每來一個(gè)脈沖升沿,寄存器從輸出從低位開始依次左移一位,同時(shí)最高位給最低位。相反,循環(huán)右移時(shí),從高位開始依次右移一位,同時(shí)最低位給最高位。 5.2條件要求 1.計(jì)算機(jī)及操作系統(tǒng) 2.MAX+Plus II 或Quartus II 軟件 3.編程電纜(可選) 5.3主要內(nèi)容 ① 根據(jù)所學(xué)相關(guān)知識,運(yùn)用MAX+PLUS II 或Quartus II 軟件的文本文件輸入方法,編寫VHDL 程序,實(shí)現(xiàn)8 位循環(huán)移位寄存器的設(shè)計(jì)。首先給出設(shè)計(jì)原理并提出實(shí)現(xiàn)方案論證,經(jīng)指導(dǎo)教師同意后,通過設(shè)計(jì)輸入、編譯綜合、仿真驗(yàn)證等過程完成并驗(yàn)證設(shè)計(jì)。 ② 器件選擇及管腳分配 ③ 設(shè)計(jì)仿真 ④ 時(shí)序分析 ⑤ 編程下載 5.4方案及實(shí)現(xiàn)方法 位循環(huán)移位寄存器的VHDL 描述有多種方法,設(shè)計(jì)過程中可以首先設(shè)計(jì)D 觸發(fā)器,而后通過D 觸發(fā)器的互聯(lián)實(shí)現(xiàn)8 位循環(huán)移位寄存器;也可采用計(jì)數(shù)脈沖CP 作為敏感量,CP 的每個(gè)上升沿,輸出量Q 的每一位賦給左邊一位或右邊一位。同時(shí)循環(huán)左移時(shí),最高位賦給最低位,循環(huán)右移時(shí),最低位賦給最高位,語句可采用case?when、with?select、if?then以及加減運(yùn)算等多種結(jié)構(gòu)實(shí)現(xiàn),詳細(xì)方案與方法略。 5.5實(shí)踐步驟與結(jié)果分析 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 (一)原理圖和VHDL程序 1)8 位循環(huán)移位寄存器 以上為采用圖形輸入法完成的一個(gè)8 位循環(huán)移位寄存器 2)VHDL程序 位循環(huán)移位寄存器的VHDL描述有多種方法,設(shè)計(jì)過程中可以根據(jù)真值表采用case?when、with?select、if?then以及加減運(yùn)算等多種結(jié)構(gòu)實(shí)現(xiàn),也可以根據(jù)真值表分析輸入輸出間的邏輯關(guān)系,根據(jù)邏輯關(guān)系寫出其布爾表達(dá)式,根據(jù)布爾代數(shù)式調(diào)用基本邏輯門元件實(shí)現(xiàn)8 位循環(huán)移位寄存器。 本實(shí)驗(yàn)中根據(jù)真值表,通過VHDL語言的if-then結(jié)構(gòu)實(shí)現(xiàn)8位循環(huán)移位寄存器。首先根據(jù)前文所述,對照真值表203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 的列出的不同輸入邏輯狀態(tài),分情況依次輸出于輸入的對應(yīng)關(guān)系,而后編譯綜合,由開發(fā)系統(tǒng)自行實(shí)現(xiàn)電路功能。 (二)器件及管腳邏分配圖 管腳分配情況如圖,所選器件為EPM3032ALC44-4。 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 (三)調(diào)試編譯與仿真波形 1、調(diào)試編譯 編譯結(jié)果正確,無錯(cuò)誤,但是有一個(gè)警告。 2、仿真波形 位循環(huán)移位寄存器的仿真波形如下圖所示: 203130705岳慧慧 30 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 從仿真波形可以看出,輸入輸出結(jié)果滿足所設(shè)計(jì)電路功能,符合前文真值表,8 位循環(huán)移位寄存器達(dá)到設(shè)計(jì)要求。 (四)時(shí)序分析圖 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 上述時(shí)間分析可以得到,輸出信號存在的時(shí)間延遲,它主要與器件速度、表達(dá)邏輯的合理性有關(guān),選用速度更高器件、優(yōu)化設(shè)計(jì)可以使該值降低。 此處,我進(jìn)行Classic Timing Analyzer 時(shí)序分析,可以得到輸入輸出端口的信號到達(dá)時(shí)間都是3.0ns,同步邏輯性能分析后可知仿真波形圖上不存在毛刺,滿足8 位循環(huán)移位寄存器的設(shè)計(jì)要求。 (五)項(xiàng)目五的結(jié)論 本次實(shí)驗(yàn)我收獲到了很多移位寄存器的相關(guān)知識,雖然期間我遇到了很多無法解決的問題,但最終都通過查閱資料,詢問同學(xué),一一得到了解決。實(shí)驗(yàn)中我們完成了1個(gè)器件的編寫:我使用了VHDL代碼的方法。通過資料我知道了74HC164是8位移位寄存器,當(dāng)其中一個(gè)(或二個(gè))選通串行輸入端的低電平禁止進(jìn)入新數(shù)據(jù),并把第一個(gè)觸發(fā)器在下一個(gè)時(shí)鐘脈沖來后復(fù)位到低電平時(shí),門控串行輸入端(A 和B)可完全控制輸入數(shù)據(jù)。一個(gè)高電平輸入后就使另一個(gè)輸入端賦能,這個(gè)輸入就決定了第一個(gè)觸發(fā)器的狀態(tài)。雖然不管時(shí)鐘處于高電平或低電平時(shí),串行輸入端的數(shù)據(jù)都可以被改變,但只有滿足建立條件203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 的信息才能被輸入。時(shí)鐘控制發(fā)生在時(shí)鐘輸入由低電平到高電平的躍變上。為了減小傳輸線效應(yīng),所有輸入端均采用二極管鉗位。每組實(shí)驗(yàn)我們都編寫了他們的源代碼,并且通過時(shí)序仿真和功能仿真不同的仿真方式讓我對加法器這個(gè)邏輯學(xué)電子元件有了更深層次的了解。很多問題最終在老師同學(xué)和自己的不懈努力中得以解決。其中我遇到了一些代碼上的書寫錯(cuò)誤問題,編譯無法運(yùn)行問題,以及時(shí)序仿真時(shí)出現(xiàn)的問題。不過最后在查閱相關(guān)資料后明白了自己是少了一些過程。 我發(fā)現(xiàn)用VHDL硬件描述語言的形式來進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大地減少了電路設(shè)計(jì)時(shí)間和可能發(fā)生的錯(cuò)誤,降低了開發(fā)成本,這種設(shè)計(jì)方法必將在未來的數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮越來越重要的作用。 我采用圖形編程法實(shí)現(xiàn)了8位循環(huán)移位寄存器的設(shè)計(jì),并完成了電路的設(shè)計(jì)編譯、綜合、邏輯仿真、時(shí)間分析,結(jié)果表明采用ALTRA的CPLD器件設(shè)計(jì)的8位循環(huán)移位寄存器,時(shí)間延遲為3ns。 附:參考程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cyreg IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);LD : IN STD_LOGIC;LR : IN STD_LOGIC;CP : IN STD_LOGIC;DOUT: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0));END cyreg;ARCHITECTURE sample OF cyreg IS BEGIN P1:PROCESS(CP,LD)BEGIN if LD='0' then DOUT<=D;elsif CP'EVENT AND CP='0' then if LR='1' then DOUT<=DOUT(6 DOWNTO 0)&DOUT(7);elsif LR='0' then DOUT<=DOUT(0)&DOUT(7 DOWNTO 1);end if;end if;END PROCESS P1;END sample; 203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 第三章 結(jié) 論 首先,通過對這門課程相關(guān)理論的學(xué)習(xí),我掌握EDA的一些基本的的知識,現(xiàn)代電子產(chǎn)品的性能越來越高,復(fù)雜度越來越大,更新步伐也越來越快。實(shí)現(xiàn)這種進(jìn)步的主要原因就是微電子技術(shù)和電子技術(shù)的發(fā)展。前者以微細(xì)加工技術(shù)為代表,目前已進(jìn)入超深亞微米階段,可以在幾平方厘米的芯片上集成幾千萬個(gè)晶體管;后者的核心就是電子設(shè)計(jì)自動化EDA(lectronic Design Automatic)技術(shù)。EDA是指以計(jì)算機(jī)為工作平臺,融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)的最新成果而開發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語言HDL完成的設(shè)計(jì)文件,自動完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動強(qiáng)度。 其次,通過對課程的實(shí)驗(yàn)的學(xué)習(xí),讓我感覺收獲頗多,我對EDA的學(xué)習(xí)和理解有了更深刻的認(rèn)識和體會,對數(shù)字邏輯與數(shù)字電路有初步的了解,而EDA是在數(shù)字電路發(fā)展到一定階段的產(chǎn)物,因此學(xué)習(xí)起來也很費(fèi)力。在這一周的實(shí)訓(xùn)中我們不僅鞏固了以前學(xué)過的知識,而且還學(xué)到了怎樣運(yùn)用EDA設(shè)計(jì)VHDL程序、電路、波形的整個(gè)過程和思路,更加強(qiáng)了我們動手能力,同時(shí)也提高了我們的思考能力的鍛煉,我們在寫程序的同時(shí)還要學(xué)會要改程序,根據(jù)錯(cuò)誤的地方去修改程序。 在此次實(shí)訓(xùn)的過程中,我了解到,我們需要加強(qiáng)培養(yǎng)動手能力,要明白理論與實(shí)踐結(jié)合的重要性,只有理論知識也是不夠的,只有把所學(xué)的理論知識和實(shí)踐相結(jié)合,才能真正提高我們的實(shí)際動手能力與獨(dú)立思考的能力。 我雖然碰到了很多困難和問題,到最后還是靠自己的努力與堅(jiān)持獨(dú)立的完成了任務(wù)。當(dāng)遇到了自己無法解決的困難與問題的時(shí)候,要有耐心,要學(xué)會一步步的去找問題的根源,才能解決問題,還請教老師給予指導(dǎo)和幫助。這次實(shí)訓(xùn)給我最深的印象就是擴(kuò)大自己的知識面,知道要培養(yǎng)哪些技能對我們的專業(yè)很重要。最終我成功地完成了這次的實(shí)踐課程,包括時(shí)序仿真和 硬件測試仿真,都取得了較好地效果。還要在今后的課本理論知識學(xué)習(xí)過程中要一步一個(gè)腳印的扎實(shí)學(xué)習(xí),靈活的掌握和運(yùn)用專業(yè)理論知識這樣才能在以后工作的實(shí)踐過程中有所成果。 通過這次課程設(shè)計(jì),我進(jìn)一步熟悉了verilog hdl語言的結(jié)構(gòu),語言規(guī)則和語言類型。對編程軟件的界面及操作有了更好的熟悉。在編程過程中,我們雖然碰到了很多困難和問題,到最后還是靠自己的努力與堅(jiān)持獨(dú)立的完成了任務(wù)。當(dāng)遇到了自己無法解決的困難與問題的時(shí)候,要有耐心,要學(xué)會一步步的去找問題的根源,才能解決問題,還請教老師給予指導(dǎo)和幫助。這次實(shí)訓(xùn)給我最深的印象就是擴(kuò)大自己的知識面,知道要培養(yǎng)哪些技能對我們的專業(yè)很重要。通過這次課程設(shè)計(jì),培養(yǎng)了我們共同合作的能力。但是此次設(shè)計(jì)中參考了其他程序段實(shí)際思想,顯示出我們在程序設(shè)計(jì)方面還有不足之處。 在此次實(shí)訓(xùn)的過程中,我了解到了要加強(qiáng)培養(yǎng)動手能力,要明白理論與實(shí)踐結(jié)合的重要性,只有理論知識也是不夠的,只有把理論知識和實(shí)踐相結(jié)合,才能真正提高我們的實(shí)際動手能力與獨(dú)立思考的能力。通過用VHDL語言設(shè)計(jì),統(tǒng)領(lǐng)整個(gè)教學(xué)內(nèi)容,讓我們在學(xué)習(xí)過程中得到反復(fù)性的思維訓(xùn)練,加深了對教學(xué)內(nèi)容的理解和運(yùn)用,增強(qiáng)了我們對EDA技術(shù)應(yīng)用性的熟悉和理解。 致 謝 非常感謝張老師這一學(xué)期來的指導(dǎo)與教誨,感謝老師在學(xué)習(xí)上給予的指導(dǎo),老師平常的工作也很忙,但是在我們學(xué)習(xí)的過程中,從來沒有耽擱過,我們遇到問題問他,他重來都是很有耐心,不管問的學(xué)生有多少,他都細(xì)心的為每個(gè)學(xué)生講解,學(xué)生們遇到的不能解決的,他都配合同學(xué)極力解決。 感謝學(xué)院給我們提供這次實(shí)訓(xùn)的機(jī)會,感謝張老師對我們的指導(dǎo),他是為了教會我們?nèi)绾芜\(yùn)用所學(xué)的知識去解決實(shí)際的問題,此外,還得出一個(gè)結(jié)論:知識必須通過應(yīng)用才能實(shí)現(xiàn)其價(jià)值!有些東西以為學(xué)會了,但真正到用的時(shí)候才發(fā)現(xiàn)是兩回事,所以我認(rèn)為只有到真正會用的時(shí)候才是真的學(xué)會了。 本次設(shè)計(jì)過程中得到我們老師們的悉心指導(dǎo)。屈老師多次詢問設(shè)計(jì)進(jìn)程,并為我們指點(diǎn)迷津,幫助我們理順設(shè)計(jì)思路,精心點(diǎn)撥、熱忱鼓勵(lì)。老師一絲不茍的作風(fēng),嚴(yán)謹(jǐn)求實(shí)的態(tài)度,踏踏實(shí)實(shí)的精神,不僅授我以文,并將積極影響我今后的學(xué)習(xí)和工作。在此誠摯地向老師們致謝,祝愿們老師身體健康,203130705岳慧慧 電子設(shè)計(jì)自動化技術(shù)EDA實(shí)習(xí)報(bào)告 全家幸福。 參考文獻(xiàn) [1]黃正瑾.CPLD系統(tǒng)設(shè)計(jì)技術(shù)入門與應(yīng)用.北京:電子工業(yè)出版社,2003 [2]宋萬杰,羅豐等.CPLD技術(shù)及其應(yīng)用.西安:西安電子科技大學(xué)出版社,1999 [3]新編數(shù)字邏輯電路.北京郵電大學(xué)出版社.江國強(qiáng).2006.12 [4]EDA技術(shù)與應(yīng)用.電子工業(yè)出版社.江國強(qiáng).2010.4 [5]數(shù)字電路EDA入門---VHDL程序?qū)嵗?北京郵電大學(xué)出版社.張亦華 [6]譚會生,張昌凡.EDA技術(shù)及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2012.6 [7]潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2008.8 203130705岳慧慧 35 青島農(nóng)業(yè)大學(xué) 電子設(shè)計(jì)自動化課程設(shè)計(jì)報(bào)告 2013——2014學(xué)年 第1學(xué)期 實(shí)習(xí)題目:數(shù)字式競賽搶答器 姓名 : 學(xué)號 : 專業(yè)班級: 指導(dǎo)老師: 2013年8月26日 EDA技術(shù)及應(yīng)用實(shí)習(xí)報(bào)告 自動售賣機(jī) 信息13-2班06號 GMH 北華大學(xué)電氣信息工程學(xué)院 目 錄 一、設(shè)計(jì)任務(wù)功能簡介............................................................................2 1、設(shè)計(jì)任務(wù)......................................................................................2 2、主要功能......................................................................................2 二、原理、方案、框圖及任務(wù)分解........................................................2 1、原理...............................................................................................2 2、方案...............................................................................................2 3、框圖...............................................................................................3 4、任務(wù)分解......................................................................................3 三、關(guān)鍵任務(wù)的設(shè)計(jì)代碼及注釋............................................................4 四、調(diào)試中出現(xiàn)的問題及解決方案........................................................8 1、問題一...........................................................................................8 2、問題二...........................................................................................8 五、產(chǎn)業(yè)化市場分析及預(yù)測....................................................................8 六、測試及運(yùn)行結(jié)果................................................................................9 七、參考文獻(xiàn)...........................................................................................1 一、設(shè)計(jì)任務(wù)功能簡介 1、設(shè)計(jì)任務(wù) 自動售貨機(jī)設(shè)計(jì)。利用軟件QuartusII軟件,使用VHDL語言結(jié)合硬件要求對本題目設(shè)計(jì)功能進(jìn)行編程,并在完成整個(gè)硬件程序設(shè)計(jì)后,在軟件平臺上進(jìn)行編譯和電路仿真,最后生成的目標(biāo)文件下載到DE2-70實(shí)驗(yàn)板上實(shí)現(xiàn)上述所有功能并驗(yàn)證程序的可行性。 2、主要功能 本設(shè)計(jì)主要實(shí)現(xiàn)的功能為:貨物信息存儲功能、商品選擇功能、輸入錢數(shù)處理功能、貨架商品更換功能、語音提示功能、信息顯示等功能。 二、原理、方案、框圖及任務(wù)分解 1、原理 自動售貨機(jī)(Vending Machine,VEM)是能根據(jù)投入的錢幣自動付貨的機(jī)器。自動售貨機(jī)是商業(yè)自動化的常用設(shè)備,它不受時(shí)間、地點(diǎn)的限制,能節(jié)省人力、方便交易。是一種全新的商業(yè)零售形式,又被稱為24小時(shí)營業(yè)的微型超市。能分為三種:飲料自動售貨機(jī)、食品自動售貨機(jī)、綜合自動售貨機(jī)。自動售貨機(jī)是臺機(jī)電一體化的自動化裝置,在接受到貨幣已輸入的前提下,靠觸摸控制按 扭輸入信號使控制器啟動相關(guān)位置的機(jī)械裝置完成規(guī)定動作,將貨物輸出。 2、方案 根據(jù)題目要求機(jī)器設(shè)有2個(gè)投幣孔,機(jī)器可以接受1元和5元的紙幣,分別有八種商品,價(jià)格分別為1元,4元,2元,3元,6元,7元,5元,8元,機(jī)器采用撥碼開關(guān)模擬機(jī)器的復(fù)位鍵、確認(rèn)購買鍵和商品選擇,并且通過開發(fā)板上的LED等分別顯示購買的不同情況,數(shù)碼管實(shí)時(shí)顯示購買金額,包括投入的價(jià)錢,找零的價(jià)錢。此設(shè)計(jì)按照EDA課程設(shè)計(jì) 的流程進(jìn)行源代碼的編寫、仿真。本設(shè)計(jì)主要利用QuartusⅡ等設(shè)計(jì)軟件進(jìn)行設(shè)計(jì)。 3、框圖 依題目要求設(shè)計(jì)流程框圖如下所示: 圖2-1 程序流程圖 4、任務(wù)分解 本設(shè)計(jì)主要包括按鍵模塊、顯示模塊、語音提示模塊。設(shè)計(jì)程序任務(wù)如下圖: 圖2-2 程序任務(wù)圖 任務(wù)一:存儲商品信息。商品名稱及商品價(jià)格等信息。 任務(wù)二:響應(yīng)用戶選擇商品的操作。用戶用過按鍵選擇商品,售賣機(jī)要實(shí)時(shí)顯示商品名稱及價(jià)格信息。任務(wù)三:貨幣處理。待用戶選擇商品結(jié)束,售賣機(jī)要接收用戶投幣,包括判斷紙幣的面額、總金額、是否投幣結(jié)束等信息。 任務(wù)四:人性化設(shè)計(jì)。售賣機(jī)要有良好的人性化交互界面,以及必要的文字、語音等提示信息。 三、關(guān)鍵任務(wù)的設(shè)計(jì)代碼及注釋 10000“; elsif item =”100“ then item_dis <=”10011001“;money_dis<=”11111001“; elsif item =”101“ then item_dis <=”10010010“;money_dis<=”10011001“; elsif item =”110“ then item_dis <=”10000010“;money_dis<=”10110000“; elsif item =”111“ then item_dis <=”11111000“;money_dis<=”10000000“;end if;end if;else item_dis<=”11111111“;money_dis 商品選擇進(jìn)程設(shè)計(jì): data:process(START,sel_add)begin if START='1' then f sel_add'event and sel_add='1' then item<=item+1;if item =”000“ then item_dis <=”11000000“;money_dis<=”10011001“;elsif item =”001“ then item_dis <=”11111001“;money_dis<=”11111000“;elsif item =”010“ then item_dis <=”10100100“;money_dis<=”10100100“;elsif item =”011“ then item_dis <=”10110000“;money_dis<=”101<=“11111111”;price <=“0000”;end if;end process data;-------------------------付錢進(jìn)程設(shè)計(jì): pay:process(finish ,one,five)begin if finish='1' then if one'event and one ='1' then pay_money_one<=pay_money_one+1; if five'event and five ='1' then pay_money_five<=pay_money_five+5;end if;pay_money <= when “0001” => <= pay_money_dis_g “11111001”;pay_money_dis_s <= “11000000”;when “0010” => <= pay_money_dis_g “10100100”;pay_money_dis_s <= “11000000”;when “0011” => <= pay_money_dis_g “10110000”;pay_money_dis_s <= “11000000”;when “0100” => <= pay_money_dis_g “10011001”;pay_money_dis_s <= “11000000”;when “0101” => <= pay_money_five+pay_money_one;case pay_money is when “0000” => <= pay_money_dis_g “10010010”;pay_money_dis_s <= “11000000”;when “0110” => <= pay_money_dis_g “11000000”;pay_money_dis_s <= “11000000”; pay_money_dis_g “10000010”;pay_money_dis_s <= “11000000”;when “0111” => <= when “1100” => <= pay_money_dis_g “10100100”;pay_money_dis_s <= “11111001”;when “1101” => <= pay_money_dis_g “11111000”;pay_money_dis_s <= “11000000”;when “1000” => <= pay_money_dis_g “10110000”;pay_money_dis_s <= “11111001”;when “1110” => <= pay_money_dis_g “10000000”;pay_money_dis_s <= “11000000”;when “1001” => <= pay_money_dis_g “10011001”;pay_money_dis_s <= “11111001”;when “1111” => <= pay_money_dis_g “10010000”;pay_money_dis_s <= “11000000”;when “1010” => <= pay_money_dis_g “10010010”;pay_money_dis_s <= “11111001”; when others => pay_money_dis_g <=“11000000”;pay_money_dis_g “11000000”;pay_money_dis_s <= “11111001”;when “1011” => <= pay_money_dis_s <= pay_money_dis_g “11000000”;end case; if pay_money >= price then “11111001”;pay_money_dis_s <= “11111001”;back <= pay_money-price;case back is when “0000” => money_back_dis <= “11000000”;when “0001” => money_back_dis <= “11111001”;when “0010” => money_back_dis <= “10100100”;when “0011” => money_back_dis <= “10110000”;when “0100” => money_back_dis <= “10011001”;when “0101” => money_back_dis <= “10010010”;when “0110” => money_back_dis <= “10000010”;when “0111” => money_back_dis <= “11111000”;when “1000” => money_back_dis <= “10000000”; when “1001” => money_back_dis <= “10010000”; when others => money_back_dis <=“11000000”; ----------------------聲音提示進(jìn)程設(shè)計(jì): int:process(START,finish) begin if START ='1' and finish = '0' then sound<=“01”; elsif START ='1' and finish = '1' then sound<=“10”; elsif START ='0' and finish = '0' then sound<=“11”; end if; end process int; ----------------------end architecture behav; 四、調(diào)試中出現(xiàn)的問題及解決方案 1、問題一 問題描述:本設(shè)計(jì)語音芯片采用LJ600,選擇揚(yáng)聲器輸出模式,可存儲6段語音片段,對應(yīng)6個(gè)引腳下降沿觸發(fā)且低電平至少維持1ms,語音觸發(fā)之后必須處于高電平狀態(tài),否則影響其他語音輸出。綜上描述,觸發(fā)信號應(yīng)為一個(gè)門信號。由于系統(tǒng)未引入時(shí)鐘,且在同一進(jìn)程中不可對輸出信號重復(fù)賦值,產(chǎn)生問題。 解決辦法:代碼如下圖,在if語句中實(shí)現(xiàn)狀態(tài)跳轉(zhuǎn)。 2、問題二 變量初始化狀態(tài)必須明確定義高低電平。即狀態(tài)輸出時(shí),必須考慮高低電平兩種狀態(tài),不可以出現(xiàn)不確定狀態(tài)。完全按照語法要求。 五、產(chǎn)業(yè)化市場分析及預(yù)測 隨著信息技術(shù)的發(fā)展及人們生活水平的不斷提高,人們的消費(fèi)觀念及消費(fèi)需求都在不斷地改變和提高。自動售賣機(jī)正是為了滿足人們的這種需求而在多年前被引入國內(nèi)的。但早期的自動售賣機(jī)在國內(nèi)并未獲得預(yù)期的市場反應(yīng)及消費(fèi)者的廣泛使用。現(xiàn)階段大多數(shù)的自動售 賣機(jī)只投放在國內(nèi)一線城市,銷售的貨品也只停留在零食、飲料、飲用水、計(jì)生用品等有限的幾樣品種。在零售業(yè)市場競爭日趨白熱化的今天,壓縮經(jīng)營成本是增強(qiáng)企業(yè)市場競爭力的一個(gè)主要手段。然而無論是連鎖超市還是便利店,日益高漲的店面租金及人力成本,已經(jīng)成為他們無法忽視也無法回避的沉重負(fù)擔(dān)。而自動售賣機(jī)卻完全沒有上述所說的麻煩,它24小時(shí)營業(yè)、售貨便利、方便找零,占地面積小(一般僅需1平方米)、移動性強(qiáng),無須常駐人員盯守、省人工成本,時(shí)尚新穎、個(gè)性獨(dú)特、集高科技于一體,有利于樹立品牌形象,養(yǎng)護(hù)費(fèi)用低,日常免維護(hù)……這些優(yōu)勢勢必引領(lǐng)潮流,使得自動售賣機(jī)日發(fā)成為市場新寵,在零售業(yè)市場占領(lǐng)一席之地。 六、測試及運(yùn)行結(jié)果 售賣機(jī)整體結(jié)構(gòu)如下圖所示: 圖6-1 整體結(jié)構(gòu) 商品0的價(jià)格為4元。 商品1價(jià)格為7元。 商品7價(jià)格為8元,輸入11元,找零3元。 商品選擇按鈕及確定按鍵。 七、參考文獻(xiàn) [1]潘松,黃繼業(yè).EDA技術(shù)與VHDL.第4版.北京:清華大學(xué)出版社,2013.4 [2]潘松,王國棟.VHDL實(shí)用教程(修訂版).成都:成都電子科技大學(xué)出版社,2001 [3]曾繁泰,陳美金.VHDL程序設(shè)計(jì).北京:清華大學(xué)出版社,2001.1第二篇:EDA實(shí)習(xí)報(bào)告
第三篇:EDA實(shí)習(xí)報(bào)告
第四篇:eda實(shí)習(xí)報(bào)告封皮
第五篇:EDA實(shí)習(xí)報(bào)告(自動售賣機(jī))