VHDL语言快速入门必读
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一·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 IS
PORT();
END ENTITY fp;
3.结构体,具体功能的实现
ARCHITECTURE a OF fp IS
BEGIN
END 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’)THEN
y<=’1’;
END IF;
(2)IF (sel=’0’)THEN
y<=’0’;
ELSE
y<=’1’;
END IF;
(3)IF(sel=”00”)THEN
y<=”01”;
ELSIF(sel=”01”)THEN
y<=”10”
……
ELSE
y<=”11;
END IF;
CASE语句:CASE sel IS
WHEN “00”=>y<=”00”;
WHEN “01”=>y<=”10”;
WHEN “11”=>y<=”11”;
END CASE;
FOR语句:FOR i IN 0 TO 7 LOOP
tmp:=tmpXORa(i);
END LOOP; WHILE语句:WHILE(i<8)LOOP
tmp:=tmpXORa(i);
i:=i+1;
END LOOP;
WHEN-ELSE语句(类似if-else):
q<=i0 WHEN sel=”00” ELSE
i1WHEN sel=”01” ELSE
i2WHEN sel=”10” ELSE
i3 WHEN sel=”11” ELSE
‘X’;
WITH-SELECT语句:(类似CASE语句)
WITH sel SELECT
q<=i0 WHEN “00” ,
i1 WHEN “01” ,
i2 WHEN “10” ,
i3 WHEN “11” ,
‘X’WHEN OTHERS ;