基于VHDL的万年历设计

合集下载

毕业论文基于veriloghdl万年历说明书

毕业论文基于veriloghdl万年历说明书

基于Verilog HDL的万年历设计与总结报告题目名称:基于Verilog HDL的万年历研究设计报告人:___________________________________________ 院系/年级/专业:________________________指导教师:________________________________________ 制作日期:_____________________________基于Verilog HDL 的万年历摘要基于Verilog HDL的万年历设计,主要完成的任务是使用Verilog语言,在Quartus2 上完成电路设计,程序开发模拟,基于功能是能够显示/ 修改年月日时分秒。

电路设计模块:分频、控制、时间显示调整、时分秒、年月日、显示控制、译码器。

各个模块完成不同的任务,合在一起就构成了万年历电路设计。

软件模拟直接在Quartus2 上进行。

随着科学技术的发展,时间观念越来越重,但是老式的钟表以及日历等时间显示工具已不合时宜。

对此,数字钟表的设计有了用武之地。

基于Verilog 的万年历设计,采用软件开发模拟,开发成本低,而且在功能设计上有了很大的灵活度。

同时,该设计的精度远远超过钟表,并且不需要维修。

综上所述,本设计具有设计方便、功能多样、电路简洁、成本低廉等优点。

符合社会发展趋势,前景广阔。

关键词:万年历,Verilog HDL ,Quartus2Based on the design of the calendar Verilog HDL circuitAbstractThe calendar based on FPGA design, the main task is to use eVrilog language, in the Quartus2 complete circuit design module is divided into several modules: point frequency, control and time display adjustment, arc, date, display, when control, decoder. Each module complete different tasks, together they form a calendar system circuit design. Software simulation on directly in Quartus2.With the development of technology and science, the concept of time is more and more heavey, but old-fashioned clock and calendar etc time display tools are not very good.Key words: Calendar,Verilog HDL ,Quartus2目录摘要......................................................... ..1Abstract .......................................................................................................... .2第一章万年历发展介绍及Verilog HDL 简介.. (3)1.1万年历的发展.................................................. ..31.2Verilog HDL 简介 (4)第二章设计原理................................................ ..52.1组成模块...................................................... ..62.2系统设计图.................................................... ..7第三章各功能模块介绍 (8)第四章模拟仿真 (11)4.1年月日仿真 (12)4.2时分秒仿真 (13)总结结论 (14)参考文献 (15)第一章万年历的发展介绍及Verilog HDL简介1.1万年历的发展钟表、日历等的数字化大大方便了我们的日常生活,同时大大扩展了其功能,而这些功能的实现,均以钟表的数字化为基础的。

vhdl万年历

vhdl万年历

FPGA——VHDL万年历LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TIMER ISPORT(CLK,RES,XUAN,JIA_SEC1,JIA_SEC2,JIA_MIN1,JIA_MIN2,JIA_HOUR1,JIA_HOUR2:IN STD_LOGIC;HOUR2,HOUR1,MIN2,MIN1,SEC2,SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END;ARCHITECTURE ONE OF TIMER ISSIGNAL HOUR11,HOUR22,SEC11,SEC22,MIN11,MIN22:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,RES,XUAN,JIA_SEC1,JIA_SEC2,JIA_MIN1,JIA_MIN2,JIA_HOUR1,JIA_HOUR2)BEGINIF(XUAN='0')THEN----------------------自动计时IF(CLK'EVENT AND CLK='1')THENIF(RES='0')THENIF(HOUR22<"0010")THENIF(HOUR11<"1001")THEN ------<19 HOURSIF(MIN22<"0101")THENIF(MIN11<"1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<=MIN11+1;END IF;END IF;ELSIF(MIN11="1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<=MIN22+1;END IF;END IF;ELSIF(MIN22="0101")THENIF(MIN11<"1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<=MIN11+1;END IF;END IF;ELSIF(MIN11="1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<="0000";HOU R11<=HOUR11+1;END IF;END IF;END IF;END IF;ELSIF(HOUR11="1001")THENIF(MIN22<"0101")THENIF(MIN11<"1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<=MIN11+1;END IF;ELSIF(MIN11="1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<=MIN22+1;END IF;END IF;END IF;ELSIF(MIN22="0101")THENIF(MIN11<"1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<=MIN11+1;END IF;END IF;ELSIF(MIN11="1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<="0000";HOU R11<="0000";HOUR22<=HOUR22+1;END IF;END IF;END IF;END IF;END IF;ELSIF(HOUR22="0010")THEN -----20--23 hoursIF(MIN22<"0101")THENIF(MIN11<"1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<=MIN11+1;END IF;END IF;ELSIF(MIN11="1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<=MIN22+1;END IF;END IF;END IF;ELSIF(MIN22="0101")THENIF(MIN11<"1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<=MIN11+1;END IF;END IF;ELSIF(MIN11="1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<="0000";HOUR11<=HOUR11+1;END IF;END IF;END IF;END IF;ELSIF(HOUR11="0100")THEN------------------------------------20--23HOURSIF(MIN22<"0101")THENIF(MIN11<"1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<=MIN11+1;END IF;END IF;ELSIF(MIN11="1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<=MIN22+1;END IF;END IF;END IF;ELSIF(MIN22="0101")THENIF(MIN11<"1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<=MIN11+1;END IF;END IF;ELSIF(MIN11="1001")THENIF(SEC22<"0101")THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<=SEC22+1;END IF;ELSIF(SEC22="0101") THENIF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<="0000";HOUR11<="0000";HOUR22<="0000";END IF;END IF;END IF;END IF;END IF;END IF;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<="0000";HOUR11<="0000";HOUR22<="0000";END IF;END IF;ELSE------------------------------------------进行手动调整IF(RES='0')THENIF(JIA_SEC1'EVENT AND JIA_SEC1='1')THEN------------------调整秒1IF(SEC11<"1001")THENSEC11<=SEC11+1;ELSE SEC11<="0000";END IF;END IF;IF(JIA_SEC2'EVENT AND JIA_SEC2='1')THEN------------------调整秒2IF(SEC22<"0101")THENSEC22<=SEC22+1;ELSE SEC22<="0000";END IF;END IF;IF(JIA_MIN1'EVENT AND JIA_MIN1='1')THEN------------------调整分1IF(MIN11<"1001")THENMIN11<=MIN11+1;ELSE MIN11<="0000";END IF;END IF;IF(JIA_MIN2'EVENT AND JIA_MIN2='1')THEN------------------调整分2IF(MIN22<"0101")THENMIN22<=MIN22+1;ELSE MIN22<="0000";END IF;END IF;IF(JIA_HOUR1'EVENT AND JIA_HOUR1='1')THEN----------------调整时1IF(HOUR11<"1001")THENHOUR11<=HOUR11+1;ELSE HOUR11<="0000";END IF;END IF;IF(JIA_HOUR2'EVENT AND JIA_HOUR2='1')THEN----------------调整时2IF(HOUR22<"0010")THENHOUR22<=HOUR22+1;ELSE HOUR22<="0000";END IF;END IF;ELSE SEC11<="0000";SEC22<="0000";MIN11<="0000";MIN22<="0000";HOUR11<="0000";HOUR22<="0000";END IF;END IF;END PROCESS;PROCESS(SEC11,SEC22,MIN11,MIN22)BEGINIF(MIN11="0000" AND MIN22="0000")THENIF(SEC11<"1010" AND SEC22<"0011")THENCOUT<='1';ELSE COUT<='0';END IF;ELSIF(MIN11="0000" AND MIN22="0011")THENIF(SEC11<"1010" AND SEC22<"0011")THENCOUT<='1';ELSE COUT<='0';END IF;ELSE COUT<='0';END IF;END PROCESS;HOUR2<=HOUR22;HOUR1<=HOUR11;SEC1<=SEC11;SEC2<=SEC22;MIN1<=MIN11;MIN2<=MIN22;END;。

基于EDA的万年历

基于EDA的万年历

目录一、设计总体思路1.1课程设计内容-------------------------------------------------1 1.2课程设计要求-------------------------------------------------1 1.3课程设计的意义----------------------------------------------2 1.4设计总体思路-------------------------------------------------2 1.5设计框图-------------------------------------------------------3 二单元电路设计2.1天模块----------------------------------------------------------4 2.2月模块----------------------------------------------------------5 2.3年模块. ---------------------------------------------------------7 2.4星期模块-------------------------------------------------------8 2.5提醒模块-------------------------------------------------------9 2.6控制模块------------------------------------------------------102.7显示模块------------------------------------------------------11三、总电路设计--------------------------------------------------13四、电路调试----------------------------------------------------14五、设计调试总结与体会--------------------------------------16六、附录-----------------------------------------------------------17七、参考文献-----------------------------------------------------18 附:课程设计评分表一、设计总体思路1.1设计总体内容用FPGA为核心器件,用VHDL为设计手段设计制作一个具有大小月份自动调节和闰年补偿功能的数字日历,具体设计要求如下:1、用7个数码管从左到右分别显示年(后两位)、月、日和星期;星期与日之间隔开一位。

基于VHDL万年历的设计

基于VHDL万年历的设计

数字万年历与数字钟的设计一、设计要求数字万年历要求可以任意设定年份月份和日期;当当日时钟走过24时(即0点)后,日期能够自动改变。

同样,当每月的最后一天走完后,月份也能够自动显示为下一个月。

年份的变化也是如此。

时钟计时按照一天24小时计。

时钟也可以按照由人工设定当前时间,或者修改当前时间,修改完成后,计时即有当前时间开始。

显示方式:日期为2001-11-08,时钟为hh-mm-ss;日期和时钟轮流显示。

二、设计原理本设计先用VHDL语言写出需要的各个小模块,并将这些模块进行编译并打包成图形文件,最后将这些图形文件在顶层文件里进行连线,实现具体要求与功能。

实验源程序:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY onesecond ISPORT (RESET: IN STD_LOGIC;GCLKP1: IN STD_LOGIC;clkout: out std_logic);END onesecond ;ARCHITECTURE Frequency_arch OF onesecond ISSIGNAL Period1S: STD_LOGIC;BEGINPROCESS( RESET, GCLKP1)VARIABLE Count1 : STD_LOGIC_VECTOR(25 DOWNTO 0); BEGINIF( GCLKP1'EVENT AND GCLKP1='1' ) THENIF( Count1>"10111110101111000010000000" ) THENCount1 := "00000000000000000000000000";ELSECount1 := Count1 + 1;END IF;Period1S <= Count1(25); -- 1MHzEND IF;clkout <= Period1S;end process;END Frequency_arch;60进制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 isport(clk: in std_logic;ld: in std_logic;da,db:in std_logic_vector(3 downto 0);outb:out std_logic_vector(3 downto 0);c0: out std_logic);end cnt60;architecture one of cnt60 issignal ma,mb:std_logic_vector(3 downto 0);beginc0<='1' WHEN( ma=5 and mb=9 ) else '0' ; process(clk,ld)beginif clk'event and clk='1' thenif ld='1' thenma<=da;mb<=db;elsif ma=5 and mb=9 thenmb<="0000";ma<="0000";elsif mb=9 thenmb<="0000";ma<=ma+1;else mb<=mb+1;end if;end if;end process;outa<=ma;outb<=mb;end one;24进制程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt24 isport(clk: in std_logic;ld: in std_logic;da,db:in std_logic_vector(3 downto 0);outb:out std_logic_vector(3 downto 0);c0: out std_logic);end cnt24;architecture one of cnt24 issignal ma,mb:std_logic_vector(3 downto 0); beginc0<='1' WHEN( ma=2 and mb=3 ) else '0' ; process(clk,ld)beginif clk'event and clk='1' thenif ld='1' then ma<=da;mb<=db;elsif ma=2 and mb=3 thenmb<="0000";ma<="0000";elsif mb=9thenmb<="0000";ma<=ma+1;elsemb<=mb+1;end if;end if;end process;outa<=ma;outb<=mb;end one;天library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity day isport(clk:in std_logic;ld: in std_logic;maxday: in std_logic_vector(1 downto 0);da:in std_logic_vector(3 downto 0);db:in std_logic_vector(3 downto 0);outa:out std_logic_vector(3 downto 0);outb:out std_logic_vector(3 downto 0);c0: out std_logic);end day;architecture one of day issignal ma: std_logic_vector(3 downto 0);signal mb: std_logic_vector(3 downto 0);beginprocess(clk,ld)beginif clk'event and clk='1' thenif ld='1' then ma<=da;mb<=db;case maxday iswhen "00"=> --28if (ma=2 and mb=8)thenma<="0000";mb<="0001";c0<='1';else if mb=9 then mb<="0000";ma<=ma+1;c0<='0';else mb<=mb+1;c0<='0';end if;end if;when "01"=> -- 29if (ma=2 and mb=9)thenma<="0000";mb<="0001";c0<='1';else if mb=9 then mb<="0000";ma<=ma+1;c0<='0';else mb<=mb+1;c0<='0';end if;end if;when "10"=> -- 30if (ma=3 and mb=0)thenma<="0000";mb<="0001";c0<='1';else if mb=9 then mb<="0000";ma<=ma+1;c0<='0';else mb<=mb+1;c0<='0';end if;end if;when others => --31if (ma=3 and mb=1)thenma<="0000";mb<="0001";c0<='1';else if mb=9 then mb<="0000";ma<=ma+1;c0<='0';else mb<=mb+1;c0<='0';end if;end if;end case;end if;end if;end process;outa<=ma;outb<=mb;end one;月library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yue isport(clk,ld:in std_logic;da: in std_logic_vector(3 downto 0);db: in std_logic_vector(3 downto 0);runnian:in std_logic;outa: out std_logic_vector(3 downto 0);outb: out std_logic_vector(3 downto 0);c0:out std_logic;maxday:out std_logic_vector(1 downto 0) );end yue;architecture one of yue issignal mb:std_logic_vector(3 downto 0);signal ma:std_logic_vector(3 downto 0);beginprocess(clk,ld)beginif (clk'event and clk='1') thenif ld='1' thenma<=da;mb<=db;if(ma=1 and mb=2)thenma<="0000";mb<="0001";elsif mb=9 thenmb<="0000";ma<=ma+1;elsemb<=mb+1;end if;end if;end if;end process;outa<=ma;outb<=mb;c0<='1' WHEN( ma=1 and mb=2 ) else '0' ;maxday <="00" when ma=0 and mb=2 and runnian='0' else "01" when ma=0 and mb=2 and runnian='1' else"10" when (ma=0 and mb=4)or(ma=0 and mb=6)or(ma=0 and mb=9)or(ma=1 and mb=1) else"11";end one;年library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity nian isport(ld1,ld2,clk:in std_logic;dy1,dy2:in std_logic_vector(3 downto 0);y1,y2,y3,y4:out std_logic_vector(3 downto 0);run,cout:out std_logic);end nian;architecture one of nian issignal q1,q2,q3,q4:std_logic_vector(3 downto 0); signal sum,sum1,sum2:std_logic_vector(1 downto 0); beginprocess(clk,ld1,ld2)beginif clk'event and clk='1' thenif ld1='1' thenq1<=dy1;q2<=dy2;elsif ld2='1' thenq3<=dy1;q4<=dy2;elseq1<=q1+1;if q1=9 thenq1<=(others=>'0');q2<=q2+1;end if;if q1=9 and q2=9 thenq1<=(others=>'0');q2<=(others=>'0');q3<=q3+1;end if;if q1=9 and q2=9 and q3=9 thenq1<=(others=>'0');q2<=(others=>'0');q3<=(others=>'0');q4<=q4+1;end if;if q2=9 and q1=9 and q3=9 and q4=9 thenq4<="0000";q3<="0000";q2<="0000";q1<="0000";cout<='1';else cout<='0';end if;end if;end if;end process ;with conv_integer(q4) selectsum1<="10" when 1|3|5|7|9,"00" when others;with conv_integer(q2) selectsum2<="10" when 1|3|5|7|9,"00" when others;process(q1,q2,q3,q4,sum1,sum2)beginif(q1="0000"and q2="0000")thensum<=sum1+q3(1 downto 0);elsesum<=sum2+q1(1 downto 0);end if;end process ;run<= '1' when sum="00" else '0';y1<=q1;y2<=q2;y3<=q3;y4<=q4;end one;置数选择程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yima1 isport(x:in std_logic_vector(2 downto 0);y0,y1,y2,y3,y4,y5,y6,y7:out std_logic);end yima1;architecture a of yima1 issignal da:std_logic_vector(7 downto 0);beginwith x selectda<="00000001"when"000","00000010"when"001","00000100"when"010","00001000"when"011","00010000"when"100","00100000"when"101","01000000"when"110","10000000"when"111","00000000"when others;y0<=da(0);y1<=da(1);y2<=da(2);y3<=da(3);y4<=da(4);y5<=da(5);y6<=da(6);y7<=da(7);end a;显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity display isport(clk:in std_logic;c4:in std_logic;ya,yb,yc,yd,ma,mb,da,db,ha,hb,fa,fb,oa,ob:in std_logic_vector(3 downto 0);d0,d1,d2,d3,d4,d5,d6,d7:out std_logic_vector(0 to 6));end display;architecture one of display issignal w:std_logic;signal s0,s1,s2,s3,s4,s5,s6,s7:std_logic_vector(3 downto 0);beginprocess(clk,c4)beginif clk'event and clk='1' thencase c4 iswhen '1' => w<='0';--display hour fen minutewhen '0' => w<='1';--display year month daywhen others=> null;end case;end if;end process;process(clk,w,ya,yb,yc,yd,ma,mb,da,db,ha,hb,fa,fb,oa,ob) beginif clk'event and clk='1' thencase w iswhen '0' =>s0<=hb;s1<=ha;s2<="1111";s3<=fa;s4<=fb;s5<="1111";s6<=oa;s7<=ob;when others =>s0<=ya;s1<=yb;s2<=yc;s3<=yd;s4<=ma;s5<=mb;s6<=da;s7 <=db;end case;end if;end process;with s0 selectd0<= "0110000" when "0001","1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","1111110" when others; with s1 selectd1<= "0110000" when "0001", "1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","1111110" when others; with s2 selectd2<= "0110000" when "0001", "1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","0000001" when "1111","1111110" when others; with s3 selectd3<= "0110000" when "0001", "1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","1111110" when others; with s4 selectd4<= "0110000" when "0001", "1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","1111110" when others; with s5 selectd5<= "0110000" when "0001", "1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","0000001" when "1111","1111110" when others; with s6 selectd6<= "0110000" when "0001", "1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","1111110" when others; with s7 selectd7<= "0110000" when "0001", "1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","1111110" when others; end one;。

基于fpga的多功能万年历

基于fpga的多功能万年历

基于FPGA的多功能万年历1. 绪论现代科技在不断进步电子技术在不断发展,电子产品设计复杂程度也在不断增加。

而且电子产品的更新换代也越来越快,现在只靠传统的纯硬件的设计方法已经不能满足现代人们的要求。

EDA就是典型的硬件设计软件化的设计平台。

EDA是一项非常先进的技术,它有许多别的技术没有的优点:像单片机需要先画出硬件图再编写相对应的程序,而EDA是先编好程序再画图的,而且模块化的编程还会在软件中生成相应的封装元件,使最后画原理图变的更加简单;可以编好程序就直接仿真,程序出现错误可以在源文件内部直接改;并且设计好的总系统可以集成在一个体积小、功耗低、可靠性高的芯片上。

本设计采用VHDL语言,VHDL语言是一种全方位的数字系统设计和测试的硬件描述。

它支持原理图输入方法以及传统的文件输入方。

对于前者适用于小规模的数字集成电路,并进行模拟仿真。

而对于大规模的、复杂的系统,如果用纯原理图设计方法的话的,由于种种条件和环境制约,会导致工作效率底而且容易出错的等缺点。

在信息技术的今天,集成电路逐渐的趋向于系统化、微尺寸化、低功耗高集成化,因此,高密度可编程逻辑器件和VHDL越来越得到设计者的青睐。

它具有极强的描述能力,支持结构、数据流、行为三种描述形式的混合的设计方式,描覆盖面广、抽象能力强。

它能支持系统行为级、逻辑门级和寄存器传输级三个不同层次的设计。

在本设计中用到的FPGA是特殊的ASIC芯片,ASIC是一种带有逻辑处理的加速处理器的专用的系统集成电路。

它具有功耗低、速度快、集成度、设计制造成本低等优点。

本设计是研究基于FPGA的多功能万年历的设计,主要实现以下功能:能够显示年、月、日、时、分、秒,时间采用24小时制。

当时间不准确时还可以手动校准。

本系统还能实时的显示当前的温度,扩展了万年历的功能。

我采用的是数字温度传感器DS18B20和FPGA组成的温度采集系统,此系统具有硬件电路简单,抗干扰能力强等优点。

VHDL课程设计

VHDL课程设计

VHDL 课程设计题目多功能万年历的数字钟设计专业名称学生姓名指导教师完成时间一:课程设计的任务设计一个多功能的数字时钟,具有以下功能:1. 正常的显示功能:显示AM、PM、时、分、秒(24进制或者12进制)。

2. 手动校时功能:按动方式键,将电路置于校时状态,则计时电路可用手动方式校准,每按一下校时键,时计数器加1;按动方式键,将电路置于校分状态,以同样方式手动校分。

按动按键有滴滴声,并且数码管显示的数字会闪动。

3. 万年历功能:显示年、月、日、星期、是否闰年。

4. 手动校正日历功能。

按动方式键,将电路置于校年状态,则计时电路可用手动方式校准,每按一下校年键,时计数器加1;按动方式键,将电路置于校月状态,以同样方式手动校月。

按动按键有滴滴声,并且数码管显示的数字会闪动。

5. 闹钟功能:按动方式键进入闹钟设定模块,设定闹钟时间。

闹铃信号到达播放音乐《两只蝴蝶》,按动停止键则立即停止播放音乐,若不按动停止键则自动播放音乐1分钟后停止。

6. 整点播报功能,从59分50秒开始发出播报,每隔2秒发出一声(信号名叫持续时间1秒,间隙1秒)连续发出5次,到达整点时停止播报。

7. 秒表功能:按动开始键开始计时,按动停止键数字保持不变,按动复位键从新计时二:系统设计根据以上对于多功能数字钟的功能的描述,可以将整个的电路设计分为以下几个模块:1.分频模块:由于实验电路板上所能提供的只有1Khz和6Mhz的信号,而本设计过程的即时以及跑表模块需要1hz、100hz和4hz的时钟信号。

2.控制模块:为达到多动能数字钟在计时、校时、显示日历、跑表等不同的模块之间切换,需要控制模块产生时序要不相冲突的控制信号,保证各个模块的功能有序的执行。

3.计时模块:在输入的1hz时钟信号,产生显示的AM、PM、时、分、秒信号,由于要涉及到后面的校时模块,这里采用带有置数的计时模块,在load信号控制下将校时模块设定的时间转载至初始值,在初始值的基础上正常计时。

vhdl电子日历设计完整

《EDA技术教程》基于VHDL 的万年历设计(EDA实验报告)学校:郑州大学院部:物理工程学院年级: 2010级专业:电子科学与技术姓名:张金灿2013年01月20日ONE:本设计为实现一个多功能的万年历,具有年、月、日、时、分、秒计时并显示的功能,其满量程计时为一万年;具有校对功能,能够对初始的时间进行人为的设定。

设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计具有万年历功能的硬件电路,在QuartusII9.0软件设计环境下,采用自顶向下的设计思路,分别对各个基础模块进行创建,通过各个基础模块的组合和连接来构建上层原理图,完成基于VHDL万年历设计。

系统目标芯片采用EP2C35F484C8N,由CNT60模块、CNT24模块、DAY模块、MONTH模块、YEAR模块、TIAOSHI模块、CONTROL模块组成。

经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,将硬件编写程序下载到试验箱上,选择模式5进行功能验证。

本系统能够完成年、月、日和时、分、秒的分别显示,由按键输入进行万年历的校时功能。

TWO: 万年历的设计思路与多功能时钟的设计思路相似。

多功能时钟的各功能模块及相互之间的连接如下图1所示图1THREE:年、月、日和时、分、秒的显示格式如图2所示。

年、月、日同时显示,时、分、秒同时显示,通过显示模式切换来分别显示。

年/ (时)月/分日/秒图2万年历显示格式FOUR:按照模块化的设计思想,要实现万年历的基础功能,必定要包含年、月、日和时、分、秒的功能模块,其中秒和分可以用六十进制计数器来实现,时用二十四进制计数器实现,月用十二进制计数器来实现,年的低两位和高两位都是一百进制计数器,比较特殊的是天的计数器,因为它有四种情况,大月三十一天,小月三十天,平年二月二十八天,闰年二月有二十九天,所以年和月的模块对天的计数都有影响,需要从年和月的输出端引出控制信号来控制天的计数。

同时每个计数器都有显示输出端和进位输出端,同时低级别(如秒)的进位输出要给较高级别(如分)的时钟输入端,以此类推,采用串行工作方式进行连接。

万年历的设计与实现

学校代码 ***** 学号 ******** 分类号 TP 密级公开本科毕业论文(设计)学院、系鄂尔多斯学院电子信息工程系专业名称自动化年级 2011 级学生姓名张文博指导教师王俊林2013年 6月 8 日万年历的设计与实现摘要本设计为一个多功能的万年历,具有年、月、日、时、分、秒计数显示功能,以24小时循环计数,具有校对功能。

本设计采用EDA 技术,以硬件描述语言verilog HDL和VHDL为系统逻辑描述手段设计文件,在Quartus II工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于KH-310开发工具的万年历。

系统主芯片采用EP1C12Q240C8,由主程序和BCD模块组成。

经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统通过控制能够完成年、月、日和时、分、秒的分别显示,由按键输入进行数字钟的校时、切换、扫描功能。

关键字:VHDL Verilog HDL EDA 万年历目录1绪论 (1)1.1选题背景 (1)1.2课题相关技术的发展 (1)1.3课题研究的必要性 (2)1.4课题研究的内容 (3)2 EDA技术 (4)2.1 EDA概述 (4)2.2什么是EDA (4)2.3 EDA的特点 (5)3 FPGA简介 (7)3.1 FPGA概述 (7)3.2 FPGA开发编程原理 (7)3.3FPGA基本结构 (8)3.4 FPGA系统设计流程 (10)4万年历设计方案 (14)4.1万年历的原理 (14)4.2 实验程序 (14)4.3 实验连接 (34)4.4 实验仿真与实现 (36)5实验结论与研究展望 (38)5.1实验结论 (38)5.2研究展望 (38)致谢 (39)参考文献 (40)内蒙古大学本科实训论文(设计)1绪论1.1选题背景20世纪末,数字电子技术飞速发展,有力的推动了社会生产力的发展和社会信息化的提高。

在其推动下,数字技术的应用已经渗透到人类生活的各个方面。

vhdl万年历

一 VHDL实现万年历该数字时钟实现了调时、年、月、日、时、分、秒、星期的显示功能,无需接译码器,可直接接七段共阴极数码管,总体结构如下图所示:图一数字时钟RTL图1:CLK(时钟信号模块)如下所示:图二时钟产生模块RTL图其中,CLK为1MHZ的晶振输入,CLKN为正常工作时钟(1HZ),CLKS(2HZ)为时钟调整时所用时钟,CLK_SACN(1KHZ)为扫描显示输出模块所用时钟频率。

2:DISPLAY(扫描显示模块)如下图所示:图三扫描显示模块RTL图3:control(调整模式选择)模块如下所示:图四调整模式选择模块RTL图4:CLOCK(时钟模块如下所示)图五时钟模块RTL图二 VHDL实现万年历(控制模块)控制模块的RTL图如下所示:图一控制模块的RTL图波形仿真图:图二仿真时序图程序如下所示:library ieee;use ieee.std_logic_1164.all;entity control isport(set_mod:in std_logic;out_mod:buffer std_logic_vector(6 downto 0));end entity control;architecture bhv of control isbeginprocess(set_mod)variable mod_state:std_logic_vector(6 downto 0); variable count:integer range 0 to 1;variable temp:std_logic;beginif rising_edge(set_mod) thenif count=0 thenmod_state:="1000000";count:=count+1;elsetemp:=mod_state(0);mod_state(5 downto 0):=mod_state(6 downto 1); mod_state(6):=temp;end if;out_mod<=mod_state;end if;end process;end architecture bhv;VHDL实现万年历(七段译码器)其段译码器的RTL图如下所示:TMV视图如下图所示:程序代码如下所示:library ieee;use ieee.std_logic_1164.all;entity seg7 isport(din:in std_logic_vector(3 downto 0); dout:out std_logic_vector(6 downto 0)); end entity seg7;architecture bhv of seg7 isbegindout<="1111110" when din="0000" else "0110000" when din="0001" else "1101101" when din="0010" else "1111001" when din="0011" else "0110011" when din="0100" else "1011011" when din="0101" else "1011111" when din="0110" else "1110000" when din="0111" else "1111111" when din="1000" else "1111011" when din="1001" else "0000000" ;end architecture bhv;4 VHDL实现万年历(扫描模块)扫描模块的RTL图如下所示:TMV图如下所示:程序代码如下所示:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity scan isport(clk_scan:in std_logic;s_in:in std_logic_vector(7 downto 0);minute_in:in std_logic_vector(7 downto 0);h_in:in std_logic_vector(7 downto 0);d_in:in std_logic_vector(7 downto 0);month_in:in std_logic_vector(7 downto 0);y_in:in std_logic_vector(7 downto 0);w_in:in std_logic_vector(3 downto 0);time_out:out std_logic_vector(51 downto 0));end entity scan;architecture bhv of scan isbegin----------process(clk_scan,s_in,minute_in,h_in,d_in,w_in,month_in,y_in) variable count:std_logic_vector(3 downto 0);beginif rising_edge(clk_scan) thenif (count="0000") thentime_out<=(others=>'0');time_out(3 downto 0)<=s_in(3 downto 0);count:=count+1;elsif (count="0001") thentime_out<=(others=>'0');time_out(7 downto 4)<=s_in(7 downto 4);count:=count+1;elsif (count="0010") thentime_out<=(others=>'0');time_out(11 downto 8)<=minute_in(3 downto 0);count:=count+1;elsif (count="0011") thentime_out<=(others=>'0');time_out(15 downto 12)<=minute_in(7 downto 4);count:=count+1;elsif (count="0100") thentime_out<=(others=>'0');time_out(19 downto 16)<=h_in(3 downto 0);count:=count+1;elsif (count="0101") thentime_out<=(others=>'0');time_out(23 downto 20)<=h_in(7 downto 4);count:=count+1;elsif (count="0110") thentime_out<=(others=>'0');time_out(27 downto 24)<=d_in(3 downto 0);count:=count+1;elsif (count="0111") thentime_out<=(others=>'0');time_out(31 downto 28)<=d_in(7 downto 4);count:=count+1;elsif (count="1000") thentime_out<=(others=>'0');time_out(35 downto 32)<=w_in(3 downto 0);count:=count+1;elsif (count="1001") thentime_out<=(others=>'0');time_out(39 downto 36)<=month_in(3 downto 0); count:=count+1;elsif (count="1010") thentime_out<=(others=>'0');time_out(43 downto 40)<=month_in(7 downto 4); count:=count+1;elsif (count="1011") thentime_out<=(others=>'0');time_out(47 downto 44)<=y_in(3 downto 0);count:=count+1;elsetime_out<=(others=>'0');time_out(51 downto 48)<=y_in(7 downto 4);count:="0000";end if;end if;end process;end architecture bhv;。

基于vhdl万年历设计说明书

目录摘要......................................... (错误!未定义书签。

) Abstract . (1)绪论.......................................... (错误!未定义书签。

)第1章基本概念简介. (2)1.1 EDA技术和FPGA/CPLD简介 (2)1.2 VHDL的简介 (3)1.3 Quartus II的简介 (4)第2章系统设计 (5)2.1 设计思想 (5)2.2 设计原理图 (6)2.3 设计流程图 (6)第3章模块分析 (7)3.1 计数器模块分析 (7)3.1.1 秒和分计数器模块 (7)3.1.2 时计数器模块 (8)3.1.3 日计数器模块 (9)3.1.4 月计数器模块 (12)3.1.5 年计数器模块 (14)3.2 校时模块 (16)3.3 显示及显示方式切换模块 (18)3.4 顶层原理图 (20)第4章引脚设定与验证 (21)4.1 引脚设定 (21)4.2 下载验证 (23)总结 (23)参考文献 (25)致谢.......................................... (错误!未定义书签。

)摘要随着EDA(电子设计自动化)技术的发展和应用领域的扩大,EDA技术在电子信息、通信、自动化控制及计算机应用领域的重要性日益突出。

EDA技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL (Hardware Description language)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割、逻辑综合(布局布线)、逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。

EDA的关键技术之一是用形式化方法来描述数字系统的硬件电路、即用所谓的硬件描述语言来描述硬件电路。

本设计是基于VHDL语言的万年历。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要 (1)Abstract (2)绪论 (3)第1章基本概念简介 (4)1。

1 EDA技术和FPGA/CPLD简介 (4)1。

2 VHDL的简介 (4)1。

3 Quartus II的简介 (5)第2章系统设计 (6)2.1 设计思想 (6)2。

2 设计原理图 (7)2.3 设计流程图 (8)第3章模块分析 (9)3.1 计数器模块分析 (9)3.1。

1 秒和分计数器模块 (9)3.1。

2 时计数器模块 (10)3。

1。

3 日计数器模块 (12)3.1。

4 月计数器模块 (16)3.1.5 年计数器模块 (19)3.2 校时模块 (22)3。

3 显示及显示方式切换模块 (25)3。

4 顶层原理图 (26)第4章引脚设定与验证 (29)4。

1 引脚设定 (29)4。

2 下载验证 (31)总结 (33)参考文献 (34)致谢...................................... (错误!未定义书签。

)随着EDA(电子设计自动化)技术的发展和应用领域的扩大,EDA技术在电子信息、通信、自动化控制及计算机应用领域的重要性日益突出。

EDA技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description language)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割、逻辑综合(布局布线)、逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。

EDA的关键技术之一是用形式化方法来描述数字系统的硬件电路、即用所谓的硬件描述语言来描述硬件电路。

本设计是基于VHDL语言的万年历。

在设计中,首先介绍了万年历的设计思路,且在Quartus II开发环境中编译和仿真所设计各个模块的程序,并逐一调试程序使各模块达到设计目的。

其次,利用各元器件生成顶层文件,进行系统仿真。

最后,对顶层原理图进行引脚设定,并下载到试验箱验证,证明系统的可行性.关键字:VHDL 万年历 Quartus IIAbstractWith the development of EDA (electronic design automation)technology and expansion of application fields ,the importance of EDA technology in electronic information, communication, auto control, and computer applications is becoming increasingly prominent. EDA technology is the core of the modern electronic design techniques, which rely on powerful computers 。

In EDA tools software platform, computer automatically completes logic simplification,logical partitions, logic synthesis , logic optimization ,logical simulation and other functions until the electronic circuit system achieves the stated performance. However, the realization of these function bases on the description of the system using the hardware description language HDL (Hardware Description language) 。

One of the key technologies of the EDA is to use formal methods to describe digital systems hardware circuit, which uses the so-called hardware description language to describe the hardware circuit。

The design is the calendar based on VHDL language。

Firstly, in which ,I introduce ideas about designing the calendar。

In addition, I compile and simulate the program of different modules in the Quartus II development environment and debug one by one to make different modules meet objectives of the design。

Secondly, I take advantage of all components,which is created according to program to generate top-level file . Finally, I make pin settings and download to the test chamber to prove the feasibility of the system.Key words: VHDL calendar Quartus II绪论EDA技术以计算机为工具,而设计者只需在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动完成逻辑编译、化简、分割、综合、布局、布线和仿真,直至对于特定目标芯片的适配编译,逻辑映射和编程下载等工作.其中,EDA的关键技术之一是用形式化方法来描述数字系统的硬件电路,即用硬件描述语言来描述硬件电路。

本设计是基于VHDL语言的万年历,故名思议,需要用VHDL语言描述万年历的硬件电路。

就万年历的功能而言,首先,其不仅要计算时间,且需要计算日期,尤其需要正确的判断每月的天数.在其中,比较困难的是如何正确的计算2月份的天数,因为闰年的2月份有29天,但平年的2月份只有28天。

由此,引出一个新的问题:在系统中除计算年份外,还需判断其是否为闰年.其次,系统还要将时间显示,显示方式分为时分秒、年月日这两种显示方式。

最后,为增加系统的实用性,本设计还增加校时功能,主要实现当计时出现误差时进行校正的功能。

在本设计中,通过程序使系统有7种不同的工作状态,分别为正常计时、校分、校时、校日、校月、校年低位、校年高位。

除此,为了显示目前所处的工作状态,用6个指示灯的亮灭来表示,6个灯都不亮时表示正常计时,其余每个灯的亮灭依次表示6种不同的工作状态。

在系统设计中,先用VHDL语言实现各个模块的功能,然后用原理图方式生成顶层文件,使设计思路清晰。

最后,对顶层原理图进行引脚设定,并进行下载验证,证明系统的可行性.第1章基本概念简介1。

1 EDA技术和FPGA/CPLD简介EDA技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description language)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割,逻辑综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。

EDA技术使得设计者的工作几乎仅限于利用软件的方式,即利用硬件描述语言HDL和EDA软件来完成对系统硬件功能的实现。

CPLD(Complex Programmable Logic Device),即复杂可编程逻辑器件,是从PAL和GAL 器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路。

它是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。

其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现数字系统的设计。

FPGA(Field-Programable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

它们的特点是直接面向用户,具有极强的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,成本低,上市时间短,工作可靠性好等。

FPGA和CPLD的应用是EDA技术有机融合硬件电子设计技术、SOC和ASIC设计,以及对自动设计与自动实现最典型的诠释。

1。

2 VHDL的简介硬件描述语言发展至今已有几十年的历史,并已成功地应用到系统的仿真,验证和设计综合等方面。

到20世纪80年代后期,已出现上百种硬件描述语言,它们对设计自动化起了促进和推动作用。

但是,它们大多针对特定设计领域,没有统一的标准,从而使一般用户难以使用.广大用户期盼一种面向设计的多层次,宽领域且得到一致认同的标准硬件语言。

80年代后期有美国国防部开发的VHDL语言(VHSIC Hardware Description Language)恰好满足上述要求,并在1987年12月由IEEE标准化VHDL(定为IEEE std 1076-1987标准,1993年进一步修订,被定为ANSI/IEEE std 1076—1993标准)。

VHDL语言的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。

据1991年有关统计资料表明,VHDL语言已被广大设计爱好者所接受,据称已有90%的设计者使用或即将使用VHDL语言设计数字系统.另外,众多CAD厂商也纷纷使自己新开发的电子设计软件与VHDL语言兼容.由此可见,使用VHDL语言来设计数字系统是电子设计技术的大势所趋。

VHDL的一个突出优点是移植性强。

因为它是一种标准语言,故它的设计描述可以被不同的工具所支持.它可以从一个模拟工具移植到另一个模拟工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台去执行。

同时,这意味着许多设计不必个个都从头再来,只要在更高层次上把已有的模块利用起来,就可以达到事半功倍的效果。

此外,VHDL本身的生命期长.因为VHDL的硬件描述与工艺技术无关,不会因为工艺变化而使描述过时。

相关文档
最新文档