VHDL设计方法用VHDL语言实现可编程数字系统设计

上传人:仙*** 文档编号:33614820 上传时间:2021-10-18 格式:PPT 页数:136 大小:1.04MB
收藏 版权申诉 举报 下载
VHDL设计方法用VHDL语言实现可编程数字系统设计_第1页
第1页 / 共136页
VHDL设计方法用VHDL语言实现可编程数字系统设计_第2页
第2页 / 共136页
VHDL设计方法用VHDL语言实现可编程数字系统设计_第3页
第3页 / 共136页
资源描述:

《VHDL设计方法用VHDL语言实现可编程数字系统设计》由会员分享,可在线阅读,更多相关《VHDL设计方法用VHDL语言实现可编程数字系统设计(136页珍藏版)》请在装配图网上搜索。

1、用VHDL语言实现可编程数字系统设计lVHDL概述lVHDL的设计单元lVHDL的基本语法结构VHDL 概述VHSIC (Very High Speed Integrated Circuit)HardwareDescriptionLanguagelVHDL“告诉我你想要电路做什么,我给你提供能实现这个功能的硬件电路”lVerilog和VHDL类似lABEL、AHDL“告诉我你想要什么样的电路,我给你提供这样的电路”VHDLLibrarySynthesisCompilerVHDLModelTechnologyLibraryNetlistTestVectorsSimulationTiming An

2、alysisPlace/RouteText OutputWaveformVHDLLibrarySimulationCompilerVHDLModelVHDLTestBenchSimulationModelTestVectorsVHDLSimulationText OutputWaveformVHDL的设计单元lEntity(实体实体)用来说明模型的外部输入输出特征用来说明模型的外部输入输出特征lArchitecture(构造体构造体)用来定义模型的内容和功能用来定义模型的内容和功能l每一个构造体必须有一个实体与它相对应,所每一个构造体必须有一个实体与它相对应,所以两者一般成对出现以两者一般成对

3、出现l类似一个类似一个“黑盒黑盒”,实体描述了,实体描述了“黑盒黑盒”的输的输入输出口入输出口Entitymy_designd11:0oeclkad11:0a11:0intasmy_designd11:0oeclkad11:0a11:0intasInput 1Input nOutput 1Output nl信号在信号在Package、Entity、Architecture 中声明中声明LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY simp ISPORT(a, b, c, d : IN Std_Logic;g : OUT Std_Logic);E

4、ND simp;ARCHITECTURE logic OF simp ISSIGNAL e,f : Std_Logic;BEGINe = a or b;f=not(c or d);g =e and f;END logic;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY if_case IS PORT ( a, b, c, d : IN Std_Logic; sel : IN Std_Logic_Vector(1 downto 0); y, z : OUT Std_Logic);END if_case;ARCHITECTURE logic OF i

5、f_case ISBEGINif_label: PROCESS(a, b, c, d, sel)BEGINIF sel=00 THEN y = a;ELSIF sel=01 THEN y = b;ELSIF sel=10 THEN y = c;ELSE y z z z z z = 0;END CASE;END PROCESS case_label;END logic;ARCHITECTURE reg1 OF reg1 ISSIGNAL a, b : BIT;BEGINPROCESS (clk)BEGINIF rising_edge(clk) THENa = d;b = a;q = b;END

6、IF;END PROCESS;END reg1;ENTITY reg1 IS PORT ( d : in BIT; clk : in BIT; q : out BIT);END reg1;ARCHITECTURE reg1 OF reg1 ISSIGNAL a, b : BIT;BEGINPROCESS (clk)BEGINIF rising_edge(clk) THENa = d;b = a;END IF;END PROCESS;q = b;END reg1;ENTITY reg1 IS PORT ( d : in BIT; clk : in BIT; q : out BIT);END re

7、g1;ARCHITECTURE reg1 OF reg1 ISVARIABLE a, b : BIT;BEGINPROCESS (clk)BEGINIF rising_edge(clk) THENa = d;b = a;q = b;END IF;END PROCESS;END reg1;l变量在IF语句中被赋值,以用来表示随时钟的变化,不会产生触发器l变量只代表临时存储,不反映实际硬件l变量可用在表示一数据立即变化的表达式中,然后再将变量的值赋给信号基本格式基本格式:LOOP标号标号:重复模式重复模式 LOOP顺序语句;顺序语句;END LOOP LOOP标号标号WHILE LOOP顺序语句顺

8、序语句END LOOP;FOR IN LOOP顺序语句顺序语句END LOOP;LOOP标号标号: LOOP顺序语句顺序语句EXIT LOOP标号标号 ;END LOOP;NEXT LOOP标号标号 WHEN 语句语句LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY shift4 ISPORT ( shft_lft : in std_logic;d_in : in std_logic_vector(3 downto 0);q_out: out std_logic_vector(7 do

9、wnto 0);END shift4;ARCHITECTURE logic OF shift4 ISBEGINPROCESS(d_in, shft_lft)VARIABLE shft_var : std_logic_vector(7 DOWNTO 0);BEGINshft_var(7 downto 4) := 0000;shft_var(3 downto 0) := d_in;IF shft_lft = 1 THENFOR i IN 7 DOWNTO 4 LOOPshft_var(i) := shft_var(i-4);END LOOP;shft_var(3 downto 0) := “000

10、0”;ELSE shft_var := shft_var;END IF;q_out = shft_var;END PROCESS;END logic;LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY compare IS PORT (a, b: IN std_logic_vector(0 TO 3);aeqb: OUT std_logic);END compare;ARCHITECTURE archcompare OF compare ISBEGINaeqb = NOT( (a(0) XOR b(0) OR (a(1) XOR b(1) OR (a

11、(2) XOR b(2) OR (a(3) XOR b(3);END archcompare;acbbcaLIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY dff_a IS PORT ( d : in std_logic; clk : in std_logic; q : out std_logic);END dff_a;ARCHITECTURE behavior OF dff_a ISBEGINPROCESS (clk)BEGINIF clkevent and clk = 1 THEN q = d;END IF;END PROCESS;END be

12、havior;ARCHITECTURE behavior OF dff_clr ISBEGINPROCESS(clk, clr)BEGINIF clr = 0 THEN q = 0;ELSIF rising_edge(clk) THEN q = d;END IF;END PROCESS;END behavior;LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ARCHITECTURE logic OF count_a ISBEGINPROCESS(rst, clk)VARIABLE tmp_q :

13、 std_logic_vector(15 downto 0);BEGINIF rst = 0 THEN q = 0;ELSIF rising_edge(clk) THENIF updn = 1 THEN tmp_q := tmp_q + 1;ELSE tmp_q := tmp_q - 1;END IF;q = tmp_q;END IF;END PROCESS;END logic;ENTITY ldcnt IS PORT (clk, ld, oe: IN std_logic;count: INOUT std_logic_vector(7 DOWNTO 0);END ldcnt; ARCHITEC

14、TURE archldcnt OF ldcnt ISSIGNAL int_count: std_logic_vector(7 DOWNTO 0); BEGINcnt: PROCESS (clk)BEGINIF rising_edge(clk) THENIF ld=1 THEN int_count = count; ELSE int_count = int_count + 1;END IF;END IF;END PROCESS cnt ;outen: PROCESS (oe, int_count) BEGINIF oe = 1 THEN count = int_count ; ELSE coun

15、t Z) ; END IF ;END PROCESS outen;END archldcnt; RESET(asynchronous)REDTIMER1YELLOWGREENTIMER1TIMER2TIMER2Y=1G=1TIMER3TIMER3R=1InputsNextStateLogicStateRegistersOutputLogicOutputsPresent StateNext StatetcoARCHITECTURE arch_2 OF state_machine ISTYPE traffic_states IS (red, yellow, green);SIGNAL sm: tr

16、affic_states;BEGINfsm: PROCESS (clock, reset) BEGIN IF reset = 1 THEN sm = red; r=1; g=0; y IF timer1=1 THEN sm = green; r=0; g=1; y=0; ELSE sm = red;r=1; g IF timer2=1 THEN sm = yellow; r=0; g=0; y=1; ELSE sm = green; r=0; g=1; y IF timer3=1 THEN sm = red; r=1; g=0; y=0;ELSE sm = yellow; r=0; g=0;

17、y sm = red;END CASE;END IF;END PROCESS fsm;END arch_2;OutputsStateRegistersOutputLogicOutputRegistersInputsNextStateLogicPresent StatetcoARCHITECTURE arch_3 OF state_machine ISSIGNAL sm: std_logic_vector(2 DownTo 0) ;Constant red:std_logic_vector(2 DownTo 0) := ”100 ;Constant green: std_logic_vector

18、(2 DownTo 0) := 010 ;Constant yellow: std_logic_vector(2 DownTo 0) := 001 ;BEGIN fsm: PROCESS (clock, reset)BEGIN IF reset = 1 THEN sm IF timer1=1 THEN sm = green; ELSE sm IF timer2=1 THEN sm = yellow; ELSE sm IF timer3=1 THEN sm = red; ELSE sm sm = red; END CASE; END IF; END PROCESS fsm; r = sm(2);

19、 g = sm(1); y = sm(0);END arch_3;StateRegistersOutputsInputsLogicbselmux2to1accbmux2to1aselsymbolcomponent schematic entity/architecturelibrarypackagetop level schematictop level entity/architecturertoplevelqscbmux2to1aseltpYour Design (VHDL)LIBRARY ieee;USE ieee.std_logic_1164.USE cypress.std_arith

20、.allLibrary (Compiled)ieeeLibrary (Compiled)AlteraPackages (VHDL)Others (VHDL)std_logictypedefinitionsOthers (VHDL)overloadedoperatorsPackages (VHDL)std_logic_1164std_arithLIBRARY ieee; USE ieee.std_logic_1164.ALL; PACKAGE mymuxpkg ISCOMPONENT mux2to1 PORT (a, b, sel: IN std_logic; c: OUT std_logic)

21、; END COMPONENT;END mymuxpkg;LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY mux2to1 IS PORT (a, b, sel: IN std_logic; c: OUT std_logic);END mux2to1;ARCHITECTURE archmux2to1 OF mux2to1 ISBEGIN c i(2), b=r(0), sel=s, c=t(0);m1: mux2to1 PortMap (c=t(1), b=r(1), a=i(1), sel=s);i = p AND NOT q;END archt

22、oplevel;lMax+Plus II 支持 VHDL87 和VHDL93lMax+Plus II 只提供这两个 IEEE 标准的子集l详细信息可参考Altera的VHDL手册单击单击图标图标l编译VHDL文件I forgot .If-then-elsecase-end caseloop-end loop?Use this symbol just as you use 7400MatchSerial_inclkVHDL State Machinelibrary ieee;use ieee.std_logic_1164.all;package your_own_type istype t_st

23、ate is (idle,state0,state01,state011, state0110,state01101, state011011);end your_own_type;library ieee;use ieee.std_logic_1164.all;use work.your_own_type.all;Entity stmh isport (clk, serial_in, reset : in std_logic; match : out std_logic);end stmh;architecture body_stmh of stmh issignal present_sta

24、te : t_state;beginprocess(clk,serial_in, present_state)beginif (reset = 1) thenpresent_state if (serial_in = 1) then present_state = state011011; else present_state present_state present_state = idle;end case;end if;end if;end process;process(present_state)beginif (present_state = state011011) thenm

25、atch = 1;elsematch if (serial_in = 0) then present_state = state0; else present_state if (serial_in = 1) then present_state = state01; else present_state if (serial_in = 1) then present_state = state011; else present_state if (serial_in = 0) then present_state = state0110; else present_state if (ser

26、ial_in = 1) then present_state = state01101; else present_state if (serial_in = 0) then present_state = state0; else present_state if (serial_in = 0) then next_state = state0; match = 0; else next_state = idle; match if (serial_in = 1) then next_state = state01; match = 0; else next_state = idle; ma

27、tch if (serial_in = 1) then next_state = state011; match = 0; else next_state = idle; match if (serial_in = 0) then next_state = state0110; match = 0; else next_state = idle; match if (serial_in = 1) then next_state = state01101; match = 0; else next_state = idle; match if (serial_in = 1) then next_

28、state = state011011; match = 1; else next_state = idle; match next_state = idle; match next_state = idle; match = 0;end case;end if;end process;present_state if (serial_in = 0) then next_state = state0; match = 0; else next_state = idle; match if (serial_in = 1) then next_state = state01; match = 0;

29、 else next_state = idle; match if (serial_in = 1) then next_state = state011; match = 0; else next_state = idle; match if (serial_in = 0) then next_state = state0110; match = 0; else next_state = idle; match if (serial_in = 1) then next_state = state01101; match = 0; else next_state = idle; match if (serial_in = 1) then next_state = state011011; match = 1; else next_state = idle; match next_state = idle; match next_state = idle; match = 0;end case;end if;end process;end body_stmh;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!