VHDL硬件描述语言(1)
- 格式:ppt
- 大小:545.00 KB
- 文档页数:88
vhdl硬件描述语言与数字逻辑电路设计数字逻辑电路设计是一种将数字信号进行处理和控制的技术。
数字电路由元器件(比如集合在一起的门、触发器、逻辑块、寄存器等)构成,这些元件的行为由原理图和逻辑方程式表示。
数字电路的设计主要是为了控制、处理和传输数字信号,具有可控制性、自动化程度较高和灵活性强的特点。
VHDL与数字逻辑电路设计是密切相关的,VHDL既可以用来描述数字电路的结构,也可以用来推导数字电路的行为。
在数字逻辑电路设计中,VHDL语言可以帮助工程师实现电路的功能和特性,简化设计过程,并提高设计的灵活性和可靠性。
VHDL是一种硬件描述语言,可以用来描述数字逻辑电路中的各种元件、信号和功能。
VHDL主要包括以下几个方面的内容:1. 实体(entity):实体用来描述数字电路的外部结构和功能,类似于模块的概念。
一个实体声明了电路的输入输出端口,并定义了电路的功能和行为。
2. 体系结构(architecture):体系结构用来描述实体的内部结构和功能,包括内部信号、寄存器、逻辑块等。
一个体系结构定义了实体的具体实现方式,包括各个元件之间的连接和控制。
3. 信号(signal):信号用来表示数字电路中的各种输入输出信号,包括时钟信号、数据信号、控制信号、状态信号等。
VHDL语言中的信号可以用来描述电路中的各种逻辑关系和行为。
4. 过程(process):过程用来描述电路中的各种行为和动作,比如数据传输、逻辑运算、状态转换等。
VHDL中的过程可以用来描述数字电路中的各种逻辑操作和控制。
5. 组合逻辑(combinational logic):组合逻辑用来描述电路中的各种逻辑运算和逻辑关系,包括与门、或门、非门、异或门等。
组合逻辑表示了电路中的直接逻辑关系和信号转换。
6. 时序逻辑(sequential logic):时序逻辑用来描述电路中的各种时钟触发、状态转换、寄存器等。
时序逻辑表示了电路中的时钟控制、状态转换和时序问题。
VHDL语言VHDL(VHSIC Hardware Description Language)是用于描述数字电路和系统的硬件描述语言,是一种标准化的硬件描述语言,广泛应用于数字电路设计和电子系统设计领域。
VHDL语言是一种强大的工具,可以帮助工程师描述复杂的数字电路,并进行仿真和综合。
它可以描述电路的结构、功能和时序行为,是一种形式化的语言,能够准确地描述电路的行为特性,有助于工程师在设计阶段发现和解决问题。
VHDL语言的基本概念实体(Entity)•实体描述了电路的接口和功能,可以看作是一种抽象的模块。
•实体中定义了输入输出端口,以及对应的信号类型和位宽。
•实体可以包含多个体系结构(Architecture)。
体系结构(Architecture)•体系结构描述了实体的具体实现,定义了实体的行为。
•体系结构中包含了处理逻辑、时序行为以及信号的赋值。
•体系结构可以描述电路的功能和行为。
信号(Signal)•信号是VHDL语言中的基本数据类型,用于在电路中传递信息。
•信号可以是标量(Scalar)或矢量(Vector),可以是时序或组合。
•信号的赋值可以是同步的或异步的。
过程(Process)•过程描述了VHDL中的行为,通常用于描述组合逻辑或时序逻辑。
•过程中可以包含逻辑运算、条件语句、循环语句等。
•过程中的代码在仿真或综合时会被执行。
VHDL语言的应用VHDL语言主要用于数字电路设计、电子系统设计、FPGA设计等领域。
工程师可以使用VHDL语言描述数字电路的结构和行为,进行仿真和综合,快速验证设计的正确性。
VHDL语言的应用领域包括但不限于:•数字电路设计•通信系统设计•控制系统设计•图像处理系统设计•嵌入式系统设计VHDL语言在电子设计领域具有广泛的应用前景,可以帮助工程师快速高效地设计数字电路系统,并满足不同应用场景的需求。
总结VHDL语言是一种强大的硬件描述语言,可以帮助工程师描述数字电路的结构和行为,进行仿真和综合,快速验证设计的正确性。
硬件描述语言实验附录姓名:xxx学号:xxx指导教师:xxx目录硬件描述语言实验附录 (1)实验1.三输入与门电路实验 (2)实验2. 三—八译码器实验 (3)实验3. D触发器实验 (4)实验4. 分频器实验 (5)实验5. 状态机实验 (8)实验1.三输入与门电路实验--三输入与门电路threeinput--姓名:王定--学号:1306034248--中北大学LIBRARY IEEE; --调用库USE IEEE.STD_LOGIC_1164.ALL;--库文件--------------------------------------------------------------ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入B: IN STD_LOGIC; --输入端口,个位写入使能C: IN STD_LOGIC; --输入端口,十位写入使能CO: OUT STD_LOGIC); --输出端口,溢出标志END ENTITY threeinput; --结束端口定义--------------------------------------------------------------ARCHITECTURE RTL OF threeinput IS--定义结构体BEGINPROCESS(A,B,C) IS --开始,必须带上BEGINCO<=A AND B AND C ;END PROCESS;END ARCHITECTURE RTL; --结束结构体表1. 三输入与门电路VHDL实验代码图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出实验2. 三—八译码器实验--王定--2015年11月25日--3线-8线译码器LIBRARYIEEE; --调用库USEIEEE.STD_LOGIC_1164.ALL; --库文件-------------------------------------------------------------ENTITYthreetoeightISPORT(DA TAIN:INSTD_LOGIC_VECTOR(2DOWNTO0);--数据输入DA TAOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--数据输出ENDENTITYthreetoeight; --结束实体-------------------------------------------------------------ARCHITECTUREBEHA VEOFthreetoeightIS--结构体BEGIN --不能漏掉PROCESS(DATAIN) --数据输入BEGIN --开始,不能漏掉CASEDATAINIS --情况判定WHEN"000"=>DA TAOUT<="00000001";WHEN"001"=>DA TAOUT<="00000010";WHEN"010"=>DA TAOUT<="00000100";WHEN"011"=>DATAOUT<="00001000";WHEN"100"=>DA TAOUT<="00010000";WHEN"101"=>DA TAOUT<="00100000";WHEN"110"=>DATAOUT<="01000000";WHEN"111"=>DA TAOUT<="10000000";WHENOTHERS=>null;ENDCASE;ENDPROCESS;ENDBEHA VE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_3_to_8 ISPORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END decoder_3_to_8;ARCHITECTURE rtl OF decoder_3_to_8 ISSIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);BEGINindata <= c & b & a;PROCESS (indata,g1,g2a,g2b)BEGINIF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THENCASE indata ISWHEN "000" => y <= "11111110";WHEN "001" => y <= "11111101";WHEN "010" => y <= "11111011";WHEN "011" => y <= "11110111";WHEN "100" => y <= "11101111";WHEN "101" => y <= "11011111";WHEN "110" => y <= "10111111";WHEN "111" => y <= "01111111";WHEN OTHERS=>y<= "XXXXXXXX";END CASE;ELSEY <= "11111111";END IF;END PROCESS;END rtl;表2. 三—八译码器VHDL实验代码图2. 三—八译码器仿真波形图--异步复位/置位的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff3 ISPORT(clk,d,clr,pset:IN STD_LOGIC;q : OUT STD_LOGIC);END dff3;ARCHITECTURE rtl OF dff3 ISBEGINPROCESS (clk,pset,clr)BEGINIF (pset='0') THENq<='1';ELSIF (clr='0') THENq<='0';ELSIF (clk'EVENT AND clk='1') THENq<=d;END IF;END PROCESS ;END rtl; --同步复位的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff4 ISPORT(clk,d,clr:IN STD_LOGIC;q : OUT STD_LOGIC );END dff4;ARCHITECTURE rtl OF dff4 ISBEGINPROCESS (clk)BEGINIF (clk'EVENT AND clk='1') THENIF (clr='0') THENq<='0';ELSEq<=d;END IF;END IF;END PROCESS ;END rtl;表3. 异步和同步D触发器VHDL实验代码图3. 异步触发器仿真波形图图4. 同步触发器仿真波形图--四分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;----------------------------------------------ENTITY clk_div ISPORT(clk: IN STD_LOGIC;--时钟输入clk_div2: OUT STD_LOGIC;clk_div4: OUT STD_LOGIC;clk_div8: OUT STD_LOGIC;clk_div16: OUT STD_LOGIC);END ENTITY clk_div;---------------------------------------------------ARCHITECTURE rtl OF clk_div ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0);--定义一个四位的信号BEGINPROCESS(clk)BEGINIF(clk' event AND clk ='1') THEN--上升沿到来IF (count="1111") THEN--达到最大计数值count<="0000"; --置零ELSEcount<=count+1; --计数END IF;END IF;END PROCESS;clk_div2<=count(0); --2分频clk_div4<=count(1); --4分频clk_div8<=count(2); --8分频clk_div16<=count(3); --16分频END rtl;表4. 四分频器VHDL实验代码图5. 四分频器仿真波形图TMP1<= '0'; --置0,带入语句滞后ELSETMP1<= '1'; --置1END IF;END IF;END IF;END PROCESS;---------------------------------------------PROCESS(CLKIN,RST)BEGINIF RST ='1'THEN --复位有效COUNT2 <= "00000000"; --立即清零TMP2<= '1';ELSIF CLKIN'EVENT AND CLKIN='0' THEN --下降沿到来IF COUNT2 = "00000100" THEN --100==4(5个数据)COUNT2 <= "00000000";ELSECOUNT2 <= COUNT2 + 1;IF COUNT2 < "00000010" THEN --10==2(三个下降沿),小于三个上升沿时,始终置0,三个下降沿对应6分频TMP2<= '1';ELSETMP2<= '0';END IF;END IF;END IF;END PROCESS;END RTL;--信号是等待整个进程结束完后,再赋值图6. 五分频器仿真波形图实验5. 状态机实验ST <= S3; END IF; OP <= '1'; WHEN S3=> IF X = '0' THEN ST <= S3; ELSE ST <= S0; END IF; OP <= '0'; END CASE; END IF; END PROCESS STATE_COMP;END ARCHITECTURE A;END IF; END CASE; END IF;END PROCESS state_comp; END a;表6. moore 与mealy 状态机VHDL 实验代码图7. moore 型状态机VHDL 实验代码图8. mealy 型状态机仿真波形图。
VHDL大总结一、填空题1.两种标识符短、扩展2.4种基本数据类型常量、变量、信号、文件3.常量说明格式constant 常数名: 数据类型:=表达式;4.三种数据变换方法?函数转换、常数转换、类型标记5.四种运算操作符?逻辑、关系、算术、并置6.如何启动进程?(1).必须包含一个显示的敏感信号变量(2).或者包含一个wait语句7.五种基本结构?库(library)、包集合(package)、实体(entity)、结构体(architecture)、配置(configuration) 8.信号与变量代入?(1).<=(2).:=9.列举可编程逻辑器件?PROM→PLA→PAL→CPLD→FPGA→EPROM→EEPROM→GAL10.数据类型整数、位、位矢量、符号、布尔量、时间、错误等级、标准逻辑11.四种端口模式?IN—OUT—INOUT—BUFFER12.三种子结构描述语句?BLOCK—PROCESS—SUBPROGRAMS13.结构体三种描述方式寄存器传输(RTL)--数据流、结构描述、行为描述14.标识符规则?(1).不以数字靠头(2).下划线不连续(3).不与保留字重复(4).下划线前后必须有英文字母或者数字(5).最后一个不能使用下划线(连字符)15.扩展标识符\12@+\16.赋值?(1).信号、变量可以多次赋值(2).常量只能定义时赋值(进程内部,子函数内部)17.高阻、不定态?'Z'------------'X'18.进程位置?结构体内部19.变量位置?进程内部---包内部----子程序内部20.进程执行机制?敏感信号发生跳变21.优先级?if语句之间具有不同优先级22.时序电路的去驱动信号?时钟23.时序电路在何时发生变化?时钟信号的边沿24.两种状态机?(1).moore-----f(现状)(2).mealy-----f(现状,输入)25.什么有九值逻辑标准逻辑(STD_LOGIC)26.定义信号a,4位标准逻辑向量?SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0);27.定义变量b,整型,范围0 到9SIGNAL B: TNTEGER RANGE 0 TO 9;28.空操作?NULL29.CPLD与FPGA?(1).基于乘积项技术—内带存储(2).基于查找表技术—需要外部扩展存储,比如扩展EEPROM30.IF语句三种类型?(1).门闩(shuan)控制(2).二选一控制(3).多选一控制31.常用库与包集合?LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;32."/="的功能?在条件判断时判断操作符两端不相等33.串行与并行?(1).赋值语句—并行(2).IF语句------串行二、判断题1.缺少库文件LIBRARY IEEE2.缺少包集合USE IEEE.STD_LOGIC_1164.ALL3.实体定义的分号问题port(aaa;bbb;ccc);或者port(aaa;bbb;ccc);4.带入语句问题(1).信号---<=(2).变量---:=5.引号问题?(1).字符----' '(2).字符串----" "6.末尾分号问题(1).END CASE;(2).END PROCESS;7.PROCESS必须赶上敏感信号?包含W AIT ON语句可以不列出8.VHDL与C语言没差别?(1).运行基础—CPU+RAM;逻辑、触发器组成的数字电路(2).执行方式---串行;并行(3).验证方式---变量值;时序逻辑关系9.进程之间传递用信号,非变量10.默认值数值型变量默认为0---------- 不要加引号(位变量)11.类型定义?type wr is (wr0, wr1, wr2);定义的是类型需要为该类型定义对象才可以赋值12.设计方法?(1).传统------------自下至上(2).VHDL----------自上至下13.层次设计?高层次可以调用低层次14.进程语句数量一个程序可以多个进程语句15.运算符优先级NOT>乘法>正负>关系>逻辑16.signalsel : integer?right17.进程内和进程外?原则上不一致,在没有敏感信号的前提下,可以认为一致18.定义实体至少包含一条port map?false19.时间效率?状态机比计数器更有效,更紧凑三、简答题1.名称映射与位置映射?(1).名称:COM1 : U1 PORT MAP (A<=N1,B<=N2,C<=N3);(2).位置:PORT(A,B:IN BIT;C:OUT BIT);引用时:U2:AND2 PORT MAP(NSEL, D1,AB);2.调用库里面包含的元件的方法?(1).COMPONENT(2).PORT MAP3.信号与变量的区别?(1).信号延时赋值,变量立即赋值(2).<=; :=(3).信号在器件内部相当于连线,变量没有(4).信号在结构体内定义,而变量在PROCESS中定义4.三种描述方式的区别?5.条件带入语句与条件语句的区别?(1).后者只能在进程内部使用(2).带入语句必须有ELSE,而条件语句可以没有(3).带入语句不能嵌套,而条件语句可以6.两种状态机的区别?7.简述CPLD与FPGA?(1).CPLD—乘积项技术—(2).FPGA—查找表技术--需要配置外部程序寄存芯片8.进程语句的特点?(1).并发执行,信号传递,可以存取结构体或实体中所定义的信号(2).内部语句都是顺序执行(3).启动进程--必须包含敏感信号或者wait语句9.简述VHDL基本结构库、包集合、实体、结构体、配置10.可编程逻辑器件的优点?(1).集成度高—可以替代几千块通用芯片(2).完善先进的开发工具(3).可以反复擦除、编程,方便设计和修改(4).可以灵活的定义管脚(5).保密性很好四、编程题1.二选一电路ENTITY MUX ISPORT(D0:IN BIT;D1:IN BIT;SEL:IN BIT;Q:OUT BIT);ARCHITECTURE CONNECT OF MUX IS SIGNAL TEMP1,TEMP2,TEMP3:BIT; BEGINCALE:BLOCKBEGINTEMP1<=D0 AND SEL;TEMP2<=D1 AND (NOT SEL);TEMP3<=TEMP1 OR TEMP2;Q<=TEMP3;END BLOCK CALE;END CONNECT;END CONNECT;2.四选一电路3.四位加法计数器4.八-三编码器5.四位逐位进位全加器6.数值比较器7.三-八译码器8.二-十(BCD)优先权编码器9.精确计时电路10.触发器11.四状态循环12.异或门设计13.二输入与非门14.三态门15.6分频器16.二-四译码器17.四-十六译码器18.8进制异步复位计数器五、附加19.I F语句门闩控制IF (A='1') THENC<=B;END IF;二选择控制IF (SEL='1') THEN***;ELSE***;END IF ;多选择控制IF ** THENXXX;ELSIF **THENXXX;ELSEXXX;END IF;20.C ASE语句CASE SEL ISWHEN 0=>Q<=I0;WHEN 1=>Q<=I1;WHEN OTHERS=>Q<="XXXXXX"; END CASE;21.并发信号带入语句实质是一个进程语句的缩写22.条件信号带入语句Q<=I0 WHEN SEL="00" ELSEI1 WHEN SEL="01" ELSE'X';23.选择信号带入语句WITH SEL SELECTQ<=I0 WHEN 0,I1 WHEN 1,I2 WHEN 2,'X' WHEN OTHERS;。
《VHDL硬件描述语言》课程教学大纲课程代码:ABJD0414课程中文名称: VHDL硬件描述语言课程英文名称:Very-High-Speed Integrated Circuit HardwareDescription Language课程性质:必修课程学分数:2学分课程学时数:32学时授课对象:自动化专业本课程的前导课程:电路,模拟电子,C语言程序设计一、课程简介本课程是电类专业的专业基础课,要求学生通过本课程的学习和实验,初步掌握常用EDA工具的使用方法、FPGA的开发技术以及VHDL语言的编程方法。
能比较熟练地使用QuartusII等常用EDA软件对FPGA和CPLD作一些简单电路系统的设计,同时能较好地使用VHDL语言设计简单的逻辑电路和逻辑系统,学会行为仿真、时序仿真和硬件测试技术,为现代EDA工程技术的进一步学习,ASIC器件设计以及超大规模集成电路设计奠定基础。
作为一门专业基础课,除了为现代电子线路课程,软件无线电课程奠定理论和实践方面的基础外,还是其他一些课程的先修课,如微电子导论、现代ASIC设计、硬件描述语言仿真/综合器设计、大规模集成电路设计等。
二、教学基本内容和要求(一)概论介绍现代EDA技术,VHDL概况,介绍自顶向下的系统设计方法以及FPGA和CPLD的基本技术,要求对现代EDA技术及实现工具的使用方法和发展情况有一初步了解。
重点与难点:EDA技术的设计工具(二)EDA设计流程及工具首先介绍基于EDA软件的FPGA/CPLD开发流程和ASIC设计流程,然后分别介绍与这些设计流程中各环节密切相关的EDA工具软件,最后简述QuartusII的基本情况和IP。
重点与难点:EDA仿真设计流程。
(三)FPGA/CPLD结构与应用主要介绍几类常用的大规模可编程逻辑器件的结构和工作原理。
对CPLD的乘积项原理和FPGA的查找表原理分别进行剖析。
最后介绍相关的编程下载和测试技术。
重点与难点:FPGA/CPLD的工作作原理及编程技术。
VHDL语言简介VHDL(VHSIC Hardware Description Language)即可高速集成电路硬件描述语言,是一种用于描述数字系统和电路的硬件描述语言。
它在1981年由美国国防部的高速集成电路联合委员会(VHSIC)开发,用于设计大规模集成电路。
VHDL是一种面向对象的语言,可以用于描述各种数字系统,从简单的逻辑门到复杂的处理器。
它提供了丰富的语法和语义,使得设计人员可以准确地描述他们的电路和系统。
VHDL的优势VHDL作为一种硬件描述语言,在数字系统设计中具有许多优势。
1.可重用性:VHDL允许设计人员创建可重用的模块和子系统,这些模块和子系统可以在不同的项目中重复使用,提高了设计效率和可维护性。
2.仿真和验证:VHDL具有强大的仿真和验证能力,可以在设计之前对系统进行全面的仿真和验证。
这有助于检测和纠正潜在的问题,并确保系统在硬件实现之前达到预期的功能。
3.抽象级别:VHDL允许设计人员在不同的抽象级别上描述系统,从高级的行为级别到底层的结构级别。
这使得设计人员可以根据需要在不同的级别上工作,并且可以更容易地进行系统级别的优化。
4.灵活性和可扩展性:VHDL支持灵活的设计方法和工作流程,并允许设计人员在设计过程中进行迭代和修改。
它还可以与其他常用的设计工具和方法集成,以满足特定的需求。
VHDL语言的基本结构VHDL语言由模块、实体、架构以及信号和过程等基本元素组成。
模块(Module)模块是VHDL中描述数字系统的最基本单位。
一个模块可以包含多个实体和架构,并通过连接信号进行通信。
每个模块都有一个顶层实体和一个或多个架构。
实体(Entity)实体是描述模块的接口和行为的抽象。
它定义了输入输出端口,以及模块对外部环境的接口。
一个实体可以有一个或多个架构。
架构(Architecture)架构描述模块的具体行为和内部结构。
它定义了模块的内部信号和过程,以及对外部信号和过程的接口。
VHDL与硬件描述语言VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,被广泛应用于数字电路和系统的设计、仿真和验证中。
本文将介绍VHDL的基本概念、语法和应用,以及其在硬件设计中的重要性和优势。
一、VHDL的基本概念与语法VHDL是由美国国防部下属的VHSIC(Very High Speed Integrated Circuits)计划发起的硬件描述语言标准化工作中发展起来的,它源于Ada语言,并在此基础上进行了修改和扩展。
VHDL采用了面向对象的设计思想,通过描述硬件的结构和行为,实现了对数字系统的高层次抽象。
VHDL的基本元素包括实体(entity)、结构(architecture)和配置(configuration)。
实体定义了模块的接口和信号,结构描述了模块内部的组织和连接关系,配置用于将不同实体和结构进行绑定。
此外,VHDL还提供了丰富的数据类型、控制结构和函数库,以支持复杂的逻辑运算和算术操作。
VHDL代码的编写需要遵循一定的语法规则,如正确使用关键字、语句结束符号等。
此外,注释和缩进等规范的使用可以提高代码的可读性和可维护性。
二、VHDL的应用1. 数字电路设计VHDL在数字电路设计中被广泛应用,通过使用VHDL语言,设计人员可以描述和验证各种数字逻辑电路,包括组合逻辑电路和时序逻辑电路。
借助VHDL仿真工具,可以进行功能仿真、时序仿真和行为仿真,验证设计的正确性和性能。
2. 系统级设计除了用于电路级设计,VHDL还可以用于系统级设计。
通过对模块的整合和功能描述,可以搭建更为复杂的系统,并在此基础上进行仿真和验证。
VHDL支持高级抽象和层次化设计,使得系统级设计更加灵活和可重用。
3. ASIC和FPGA设计VHDL在应用特定的集成电路(ASIC)和现场可编程门阵列(FPGA)的设计中,具有非常重要的地位。
ASIC是在集成电路制造厂中进行定制化设计和生产的芯片,而FPGA则是可以在现场进行编程和配置的可重构芯片。