不同点:case语句只能在进程中使用,至少包含一个条件语句,可以有多个赋值目标;with_seclect语句根据满足的条件,对信号进行赋值,其赋值目标只有一个,且必须是信号。 ②library ieee; use ieee.std_logic_1164.all; entity mux is
port( dina : in std_logic_vector(0 to 15); dinb : in
std_logic_vector(0 to 15); dinc : in std_logic_vector(0 to 15); dind : in std_logic_vector(0 to 15);
sel: in std_logic_vector(0 to 1); dout : out std_logic_vector(0 to 15)); end mux;
architecture rtl of mux is begin with sel select
dout=dina when 00,dinb when 01, dinc when 10, dind when 11,
zzzzzzzzzzzzzzzz when others; end rtl;
13-3 为什么说一条并行赋值语句可以等效为一
个进程?如果是这样的话,该语句咋么实现敏感信号的检测?
解:因为信号赋值语句的共同点是赋值目标必须都是信号,所有赋值语句与其它并行语句一样,在结构体内的执行是同时发生的,与它们的书写顺序没有关系,所以每一信号赋值语句都相当于一条缩写的进程语句。由于这条语句的所有输入信号都被隐性地列入此缩写进程的敏感信号表中,故任何信号的变化都将相关并行语句的赋值操作,这样就实现了敏感信号的检测。
13-4 在string,time,real,bit数据类型中,vhdl 综合器支持哪些类型?
答:vhdl支持bit类型和string类型,其他属于用户定义的数据类型不能综合
13-5 判断下列vhdl标识符是否合法,如果有误
则指出原因16#0fa#,10#12f#,8#789#,8#356#,2#0101010#,74hc245,\\74hc574\\,clr/reset,\\in 4/sclk\\, d100%。
答:识符用法规定:(1)只能包含英文字母,数字,下划线(2)标识符的首字符只能是字母。故: (1)16#0fa#错在首字符是数字,且包含非法字符“#“。 10#12f#、8#789#,8#356#,2#0101010#,74hc245也是犯同一错误。
(2)\\74hc574\\,clr/reset,\\in4/sclk\\,d100%都 是非法,包含非法字符….
13-6 数据类型bit,integer和boolean分别定义
在那个库中?哪些库和程序包总是可见的?答:bit定义在ieee库中,integer和boolean定义在std库中,除了std库和work库外,ieee库面向asic的库和用户自定义的库及其中的包集合 13-7 函数与过程的设计与功能有什么区别? 调用上有什么区别?
1.函数的定义由函数首和函数体两部分组成,在进程或结构体中不必定义函数首,而在程序包中必须定义函数首。
过程也由过程首和过程体构成,在进程或结构体中不必定义过程首,而在过程包中必须定义过程首。 2.函数是串行,过程是串行。
3区别:(1)参数表的区别。函数的参数表是用来定义输出值的,所以不必以显式表示参数的方向;过程的参数表可以对常数、变量和信号三类数据对象目标作出说明,并用关键词in、out和inout定 义这些参数的工作模式,即信息的流向。如果没有指定模式,则默认为in。 (2)函数参量可以是信号或常数,默认函数参数为常数;过程的参数类型可以是常量或者是变量。
(3)过程可有多个返回值,函数只能有一个。 (4)过程中可以有wait,而函数中不可以。
(5)调用方式:函数调用时将所定义的函数作为语句中的一个因子如如一操作数或赋值句。过程调用将定义的过程名作为一条语句来执行。 名词解释 1、pld/fpga
pld是可编程逻辑器件的简称,fpga是现场可编程门阵列的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或pld/fpga。 2、prom、pal和pla
prom:与阵列固定,或阵列可编程,一般用作存储器,其输入为存储器的地址,输出为存储器单元的内容。但输入的数目太大时,器件功耗增加,其局限性大。
pla:与或阵列均可编程,但是其慢速特性和相对pal、prom而高得多的价格妨碍了它被广泛使用。 pal:或阵列固定,与阵列可编程,其第二代产品gal具有了可电擦写、可重复编程、可设置加密的功能。
3、vhdl中有哪三种数据对象(客体)?详细说明他们的供功能特点以及使用方法。
主要包括三种数据对象:信号,变量,常数。 其中常数是一个固定的值,常数说明就是对某一常数名赋予一个固定的值,一旦赋值不
能改变;常熟赋值一般在程序的开始;其格式为:constant常数名:数据类型:=表达式;
变量只能在进程语句,块语句,函数语句和过程语句结构中使用,是局部量,其赋值立即生效且赋值时不能产生附加延时。其格式为:variable 变量名:数据类型 约束条件 :=表达式;
信号是电子电路内部硬件连接的抽象可以产生附加延时,数据对象是可以被赋值的对象。信号定义在实体、构造体、包集合中;其格式为:signal 信号名:数据类型 约束条件:=表达式。