当前位置:文档之家› VHDL语言快速入门必读

VHDL语言快速入门必读

一·1.数据类型BIT与STD_LOGIC有什么区别。

BIT类型的取值只能是0或1,没有不定状态X,也没有高阻态。

STD_LOGIC类型可以有9种不同的值,包括U-初始值,X-不定,0-0,1-1,Z-高阻态,W-弱信号不定,L-弱信号0,H弱信号1.‘—’不可能情况。

2.信号和变量的异同。

信号是全局量,只要在结构体中已经定义,就可以在结构体中的所有地方使用,信号的赋值符号是”<=”,信号带入时可以附加延时,信号实际带入过程和带入语句的处理时分开进行的。

变量是局部量,只能在进程,子程序内部定义和使用,变量的赋值符号是“:=”,变量的赋值是立即执行的,不能附加延时。

3.VHDL语言的基本顺序语句和并行语句有哪些?双性语句:信号带入语句顺序语句:WHAT语句,断言语句,变量赋值语句,IF语句,CASE语句,LOOP语句,NEXT语句,EXIT语句,过程调用语句,NULL语句。

并行语句:进程(PROCESS)语句,条件带入语句,选择信号带入语句,并发过程调用语句,块语句。

4.用VHDL语言进行硬件设计的流程是什么?1.分析实际的需求2确定芯片的功能3.用VHDL 语言描述改元件4.编译,如果有错误修改后再编译直至编译通过。

5.仿真,如果仿真不符合设计要求,修改程序直至仿真通过。

6.测试7.综合,8.下载到实际的芯片上。

5.基本的硬件描述语言的种类有哪些?美国国防部开发的VHDL。

Verilog公司开发的Verilog-HDL.日本电子工业振兴协会开发的UDL/I语言。

6.VHDL语言中包含的库的种类有哪些?库:是经编译后的数据的集合,它存放包集合定义,实体定义,构造体定义,和配置定义。

库的种类:1.IEEE库,2.STD库,3.面向ASIC 的库,4.WORK库,5.用户定义库7.IEEE库中所包含的基本类型转换函数有1.包含程序所用的库LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;2.实体声明ENTITY fp ISPORT();END ENTITY fp;3.结构体,具体功能的实现ARCHITECTURE a OF fp ISBEGINEND ARCHITECTURE a;9.VHDL的程序子结构有哪些?进程(PROCESS)顺序语句,块(BLOCK)并行语句,过程(PROCEDURE)顺序语句,函数(顺序语句)。

10.简述when-else和if-else的区别?If-else是顺序语句所以只能在进程内部使用,可以没有else语句,可以进行嵌套。

有自身值带入的描述,能组成锁存电路。

When-else是并行语句,在结构体内使用,必须要有else语句,不能进行嵌套,没有自身值带入的描述,不能组成锁存电路。

11.什么是ASIC,ASIC的特点是什么?ASIC是Application Specific Integrated Circuit 的英文缩写,在集成电路界被认为是一种为专门目的而设计的集成电路。

ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。

12.逻辑电平有哪些?逻辑电平:有TTL、CMOS、LVTTL、ECL、PECL、GTL;RS232、RS422、LVDS等。

·其中TTL和CMOS的逻辑电平按典型电压可分为四类:5V系列(5V TTL和5V CMOS)、3.3V 系列,2.5V系列和1.8V系列。

·5V TTL和5V CMOS逻辑电平是通用的逻辑电平。

13.TTL电平和CMOS电平可以互联吗?数字电路中TTL电平是个电压范围,规定输出高电平>2.4V,输出低电平<0.4V。

在室温下,一般输出高电平是3.5V,输出低电平是0.2V。

CMOS电平在不同的电路中是0v-5v或者0v-12v。

所以可以用CMOS电平驱动TTL电平器件,但是TTL 电平驱动CMOS电平器件时须加上拉电阻。

二·用VHDL语言描述给定电路,或写出给定电路的功能或输出。

三.程序改错。

四.注释程序。

五.程序同功能语句替换。

六.元件例化连接器件。

程序例子:IF语句:(1)IF(sel=’0’)THENy<=’1’;END IF;(2)IF (sel=’0’)THENy<=’0’;ELSEy<=’1’;END IF;(3)IF(sel=”00”)THENy<=”01”;ELSIF(sel=”01”)THENy<=”10”……ELSEy<=”11;END IF;CASE语句:CASE sel ISWHEN “00”=>y<=”00”;WHEN “01”=>y<=”10”;WHEN “11”=>y<=”11”;END CASE;FOR语句:FOR i IN 0 TO 7 LOOPtmp:=tmpXORa(i);END LOOP; WHILE语句:WHILE(i<8)LOOPtmp:=tmpXORa(i);i:=i+1;END LOOP;WHEN-ELSE语句(类似if-else):q<=i0 WHEN sel=”00” ELSEi1WHEN sel=”01” ELSEi2WHEN sel=”10” ELSEi3 WHEN sel=”11” ELSE‘X’;WITH-SELECT语句:(类似CASE语句)WITH sel SELECTq<=i0 WHEN “00” ,i1 WHEN “01” ,i2 WHEN “10” ,i3 WHEN “11” ,‘X’WHEN OTHERS ;分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fp ISPORT(clk: IN STD_LOGIC;fp1024,fp512,fp64,fp4,fp1: OUT STD_LOGIC); END ENTITY fp;ARCHITECTURE a OF fp ISSIGNAL buf:STD_LOGIC_VECTOR(9 DOWNTO 0); BEGINfp1<=buf(9);fp4<=buf(7);fp64<=buf(3);fp512<=buf(0);fp1024<=clk;PROCESS(clk) ISBEGINIF(clk'EVENT AND clk='1') THENIF(buf="1111111111") THEN LIBRARY IEEE;报时电路USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bs ISPORT(min,sin: IN STD_LOGIC_VECTOR(7 DOWNTO 0); clk,bs512,bs1024: IN STD_LOGIC;bsout: OUT STD_LOGIC);END ENTITY bs;ARCHITECTURE a OF bs ISBEGINPROCESS(clk) ISBEGINIF(clk'EVENT AND clk='1') THENIF(min="01011001") THENCASE sin ISWHEN "01010000"=>bsout<=bs512;WHEN "01010010"=>bsout<=bs512;WHEN "01010100"=>bsout<=bs512;WHEN "01010110"=>bsout<=bs512;WHEN "01011000"=>bsout<=bs512;WHEN "01011001"=>bsout<=bs1024;WHEN OTHERS=>bsout<='0';END CASE;END IF;END IF;END PROCESS; END ARCHITECTURE a;buf<="0000000000";ELSEbuf<=buf+'1';END IF;END IF;END PROCESS;END ARCHITECTURE a;元件例化LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count60 ISPORT(clkin,en,res: IN STD_LOGIC;bs0,bs1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);cyout: OUT STD_LOGIC);END ENTITY count60;ARCHITECTURE count OF count60 ISCOMPONENT count10 ISPORT(clk,enable,reset: IN STD_LOGIC;b0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);cy: OUT STD_LOGIC);END COMPONENT;SIGNAL count4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL clk1,cy1:STD_LOGIC;BEGINbs1<=count4;cyout<=cy1;u0:count10 PORTMAP(clk=>clkin,cy=>clk1,reset=>res,enable=>en,b0=>bs0) ;PROCESS(clk1,res,en) ISBEGINIF(res='0') THENcount4<="0000";ELSIF (clk1'EVENT AND clk1='1') THENIF(en)='1' THENIF(count4="0110") THENcount4<="0000";cy1<='1';ELSEcount4<=count4+'1';cy1<='0';END IF;END IF;END IF;END PROCESS;END ARCHITECTURE count;。

相关主题