1、EPGA的中文意思是什么?
完全由用户通过软件进行配置和编程,从而完成某种特定的功能,并且可以反复擦写。
2、所谓敏感信号表达式。即当该表达式中的变量的值改变时,就会引发块内语句的执行always过程语句的敏感信号可以分为两种类型:一种为边沿敏感型、一种为电平敏感型。
“always”过程语句通常是带有触发条件的,触发条件写在敏感信号表达式中,只有当触发条件满足时,其后的“begin-end”块语句才能被执行。下面讨论敏感信号表达式“event-expression”的含义以及如何写敏感信号表达式IP核的感念和分类。
所谓敏感信号表达式,又称事件表达式或敏感信号列表,即当该表达式中变量的值改变时,就会引发块内语句的执行。因此,敏感信号表达式中应列出影响块内取值的所有信号。若有两个或两个以上信号,它们之间用“or”连接。
always @(posedge clk or posedge clr)
//两个敏感信号都是边沿敏感型
always @(a or b)
//两个敏感信号都是电平敏感型
always @(posedge clk or clr)
//不建议这样用,最好不要将边沿敏感型和电平
//敏感型列在一起
3、每个Verilog程序包括4个主要部分:模块声明、端口定义、信号类型说明和逻辑功能描述。
1)模块声明: 模块声明包括模块名字和模块输入、输出端口列表。其格式如下:module 模块名 (端口1,端口2,端口3……);模块结束的标志为关键字:endmodule。
2)端口(Port)定义:对模块的输入、输出端口要明确说明,其格式为:
端口是模块与外界或其他模块连接和通信的信号线,如图所示:有三种类型的端口:输入端口(input)、输出端口(output)和输入/输出端口(inout).
3)信号类型声明: 对端口的输入输出除了要明确说明外,还要进行信号数据类型的定义。Verilog语言提供了各种信号类型,分别模拟实际电路中的各种物理连接和物理实体。
常用的数据类型包括连线型(wire)、寄存器型(reg)两种。如果信号的数据类型没有定义,则综合器将其默认为wire型。
注:输入端口和双向端口不能声明为寄存器型
4)逻辑功能定义: 模块中最核心的部分是逻辑功能定义。有多种方法可在模块中描述和定义逻辑功能,还可以调用函数(function)和任务(task)来描述逻辑功能。下面介绍定义逻辑功能的几种方法。
用“assign”持续赋值语句定义: “assign”语句一般用于组合逻辑的赋值,成为持续赋值语句。如: assign F=~((A&B)|(C&D));
这种方法简单,只需将逻辑表达式放在关键字“assign”后即可。
4、Verilog HDL所描述的信号通常有4种基本逻辑状态:高电平、低电平、高阻态和不确定状态。
Verilog HDL有下面4种基本逻辑状态:0:低电平、逻辑0或逻辑非;1:高电平、逻辑1或“真”;x或X:不确定或未知的逻辑状态;z或Z:高阻态。这四种值的解释都内置于语言中。如一个为z的值总是意味着高阻抗,一个为0 的值通常是指逻辑0;在门的输入或一个表达式中为“z”的值通常解释成“x ”。此外x值和z值都是不分大小写的,也就是说,值0x1z与值0X1Z相同。
5、Verilog HDL中的标识符可以是任意一组字母、数字、$符号好_(下划线)符号的组合,但标识符的第一个字符必须是字符或者下划线。
1、有效的字符:包括26个英文字母,(大小写都包括),数字包括0~9以及“$”
和下划线“ ” 等,或它们的组合。标识符最长可以包含1023个字符。2、任何标识符必须以英文字母或下划线开头。3、必须是单一划线“ ”,且前后都必须有英文字母或数字。4、标识符中的英语字母区分大小写。5、允许包含图形符号,也允许包含空格符。
6、在Verilog HDL中存在4种类型的循环语句,可用来控制语句执行次数。这4种语句分别:for、repeat、while和forever。
1. for语句:for语句使用格式:for(表达式1;表达式2;表达式3) 语句;即: for(循环变量赋
初值;循环结束条件;循环变量增值) 执行语句;2. repeat语句:repeat语句的使用格式为:repeat(循环次数表达式) 语句;或repeat(循环次数表达式) begin……
end。3、While语句:while语句的使用格式如下:while(循环执行条件表达式)语句;
或 while(循环执行条件表达式)begin …… end。while语句在执行时,首先判断循环执行条件表达式是否为真,若为真,执行后面的语句或语句块,然后再回头判断循环执行条件表达式是否为真,为真的话,再执行一遍后面的语句,如此不断,直到条件表达式不为真。因此,在执行语句中,必须有一条改变循环执行条件表达式的值的语句。 4. forever语句:forever语句的使用格式如下:forever语句;
或 forever begin …… end forever循环语句连续不断地执行后面的语句或语句块,常用来产生周期性的波形,作为仿真激励信号,for语句一般用在initial过程语句中,若要用它来进行模块描述,可用disable语句进行中断。
7、有限状态机及其设计技术是实用数字系统设计的重要组成部分。从信号的输出方式。有Moore型和Mealy两类状态机。
Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步;Moore型机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟使状态发生时才导致输出的变化,所以比Mealy型机要多等待一个时钟周期。
8、简要描述FPGA的开发流程。
FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。
Xilinx公司提供了FPGA开发软件ISE,这是一个集成的开发环境。用户可以在ISE工程管理器—Project Navigator界面的统一管理下,完成所有的设计输入、仿真、综合、布线、下载等工作,而且其中集成了强大的仿真工具ModelSim。
9、组合电路和时序电路的区别。
while语句都可以用for改写 时序电路:它是由最基本的逻辑门电路加上反馈逻辑回路(输出到输入)或器件组合而成的电路,与组合电路最本质的区别在于时序电路具有记忆功能。时序电路的特点是:输出不仅取决于当时的输入值,而且还与电路过去的状态有关。它类似于含储能元件的电感或电容的电路,如 触发器 、 锁存器 、 计数器 、 移位寄存器 、 储存器等电路都是时序电路的典型器件。
10、Verilog语言与C语言特点比较。
(1)Verilog是一种硬件语言,最终是为了产生实际的硬件电路或对硬件电路进行仿真;而C语言是一种软件语言,是控制硬件来实现某些功能的语言。
(2)C语言只要是语法正确,都可以编译执行;而Verilog语言有可综合的限制,即在所有的Verilog语句中,只有一部分可以被综合,而另外的部分则不能被综合,只能用来仿真。
(3)C语言是一种软件编程语言,其基本思想是语句的循序执行;而Verilog语言的基本思想是模块的并行执行。
(4)利用Verilog编程时,要时刻记得Verilog是硬件语言,要时刻将Verilog与硬件电路对应
起来。
11、Verilog语言中的函数使用时的注意事项有哪些、任务使用的注意事项有哪些。二者之间的区别。
1函数:函数的定义和调用须在一个module模块内
2函数只允许有输入变量,且必须至少有一个输入变量,输出变量由函数名本身担任。因此在定义函数时,需对函数名说明其类型和位宽。
3定义函数时,没有端口名列表,但调用函数时,需列出端口名列表,端口名的排序和类型必须与定义时的相一致,这点与任务相同。
4函数可以出现在连续赋值assign的右端表达式中。
5函数不能调用任务,而任务可以调用别的任务和函数,且调用任务和函数个数不受限制。
1任务:任务的定义与调用须在一个module模块内
2定义任务时,没有端口名列表,但需要紧接着进行输入、输出端口和数据类型的说明
3当任务被调用时,任务被激活。任务的调用与模块调用一样通过任务名调用来实现。调用时,需列出端口名列表,端口的排序和类型必须与任务定义中的一致
4一个任务可调用别的任务和函数,可以调用的任务和函数个数不限。
任务和函数的合理使用会使程序显得结构清晰而简洁,一般的综合器对task和function都是支持的,但也有的综合器不支持task,需要在使用的时候加以注意。
12、阻塞赋值与非阻塞赋值的特点。
阻塞赋值:阻塞赋值语句,从字面上理解,该条语句阻塞了下面语句的执行,“=”用于阻塞的赋值,凡是在组合逻辑(如在assign语句中)赋值的请用阻塞赋值。非阻塞赋值:非阻塞赋值操作符用小于等于号(即<=)表示,只能用于对寄存器类型变量进行赋值,因此只能用在“initial ”和“always”等过程块中,不能用在assign语句中。
在同一个进程块中,最好不要同时用阻塞赋值和非阻塞赋值语句。
13、同步复位与异步复位操作的区别。
同步是指与时钟同步,即时钟触发条件满足时检测清零信号是否有效,有效则在下一个时间周期的触发条件下,执行清零; 异步是清零信号有效时,无视触发脉冲,立即清零。 同步信号可以过滤掉不正确状态跳变对逻辑的影响,但是需要保证有效输入信号在时钟信号跳变前完成跳变,否则输入信号就是无效的。异步信号则和同步信号的效果正好相反。使用时请根据实际情况考虑。
14、数码管显示、自动售饮料机。
对于输入币值变化的判断,采用if-else语句来判断。整个描述用一个过程块加以表示。有限状态机从本质上讲是由寄存器和组合逻辑构成的时序电路,各个状态之间的转移总是在时钟的触发下进行的,也可以在设计时将时序逻辑部分和组合逻辑部分分在两个“always”过程块中进行描述,这样在综合时可以减少一些不必要的寄存器。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论