EDA复习.docx

上传人:b****3 文档编号:5053682 上传时间:2023-05-07 格式:DOCX 页数:11 大小:19.35KB
下载 相关 举报
EDA复习.docx_第1页
第1页 / 共11页
EDA复习.docx_第2页
第2页 / 共11页
EDA复习.docx_第3页
第3页 / 共11页
EDA复习.docx_第4页
第4页 / 共11页
EDA复习.docx_第5页
第5页 / 共11页
EDA复习.docx_第6页
第6页 / 共11页
EDA复习.docx_第7页
第7页 / 共11页
EDA复习.docx_第8页
第8页 / 共11页
EDA复习.docx_第9页
第9页 / 共11页
EDA复习.docx_第10页
第10页 / 共11页
EDA复习.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA复习.docx

《EDA复习.docx》由会员分享,可在线阅读,更多相关《EDA复习.docx(11页珍藏版)》请在冰点文库上搜索。

EDA复习.docx

EDA复习

1、EPGA的中文意思是什么?

完全由用户通过软件进行配置和编程,从而完成某种特定的功能,并且可以反复擦写。

2、所谓敏感信号表达式。

即当该表达式中的变量的值改变时,就会引发块内语句的执行always过程语句的敏感信号可以分为两种类型:

一种为边沿敏感型、一种为电平敏感型。

“always”过程语句通常是带有触发条件的,触发条件写在敏感信号表达式中,只有当触发条件满足时,其后的“begin-end”块语句才能被执行。

下面讨论敏感信号表达式“event-expression”的含义以及如何写敏感信号表达式IP核的感念和分类。

所谓敏感信号表达式,又称事件表达式或敏感信号列表,即当该表达式中变量的值改变时,就会引发块内语句的执行。

因此,敏感信号表达式中应列出影响块内取值的所有信号。

若有两个或两个以上信号,它们之间用“or”连接。

always@(posedgeclkorposedgeclr)

//两个敏感信号都是边沿敏感型

always@(aorb)

//两个敏感信号都是电平敏感型

always@(posedgeclkorclr)

//不建议这样用,最好不要将边沿敏感型和电平

//敏感型列在一起

3、每个Verilog程序包括4个主要部分:

模块声明、端口定义、信号类型说明和逻辑功能描述。

1)模块声明:

模块声明包括模块名字和模块输入、输出端口列表。

其格式如下:

module模块名(端口1,端口2,端口3……);模块结束的标志为关键字:

endmodule。

2)端口(Port)定义:

对模块的输入、输出端口要明确说明,其格式为:

端口是模块与外界或其他模块连接和通信的信号线,如图所示:

有三种类型的端口:

输入端口(input)、输出端口(output)和输入/输出端口(inout).

3)信号类型声明:

对端口的输入输出除了要明确说明外,还要进行信号数据类型的定义。

Verilog语言提供了各种信号类型,分别模拟实际电路中的各种物理连接和物理实体。

常用的数据类型包括连线型(wire)、寄存器型(reg)两种。

如果信号的数据类型没有定义,则综合器将其默认为wire型。

注:

输入端口和双向端口不能声明为寄存器型

4)逻辑功能定义:

模块中最核心的部分是逻辑功能定义。

有多种方法可在模块中描述和定义逻辑功能,还可以调用函数(function)和任务(task)来描述逻辑功能。

下面介绍定义逻辑功能的几种方法。

用“assign”持续赋值语句定义:

“assign”语句一般用于组合逻辑的赋值,成为持续赋值语句。

如:

assignF=~((A&B)|(C&D));

这种方法简单,只需将逻辑表达式放在关键字“assign”后即可。

4、VerilogHDL所描述的信号通常有4种基本逻辑状态:

高电平、低电平、高阻态和不确定状态。

VerilogHDL有下面4种基本逻辑状态:

0:

低电平、逻辑0或逻辑非;1:

高电平、逻辑1或“真”;x或X:

不确定或未知的逻辑状态;z或Z:

高阻态。

这四种值的解释都内置于语言中。

如一个为z的值总是意味着高阻抗,一个为0的值通常是指逻辑0;在门的输入或一个表达式中为“z”的值通常解释成“x”。

此外x值和z值都是不分大小写的,也就是说,值0x1z与值0X1Z相同。

5、VerilogHDL中的标识符可以是任意一组字母、数字、$符号好_(下划线)符号的组合,但标识符的第一个字符必须是字符或者下划线。

1、有效的字符:

包括26个英文字母,(大小写都包括),数字包括0~9以及“$”

和下划线“”等,或它们的组合。

标识符最长可以包含1023个字符。

2、任何标识符必须以英文字母或下划线开头。

3、必须是单一划线“”,且前后都必须有英文字母或数字。

4、标识符中的英语字母区分大小写。

5、允许包含图形符号,也允许包含空格符。

6、在VerilogHDL中存在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语句;

或foreverbegin……endforever循环语句连续不断地执行后面的语句或语句块,常用来产生周期性的波形,作为仿真激励信号,for语句一般用在initial过程语句中,若要用它来进行模块描述,可用disable语句进行中断。

7、有限状态机及其设计技术是实用数字系统设计的重要组成部分。

从信号的输出方式。

有Moore型和Mealy两类状态机。

Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步;Moore型机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟使状态发生时才导致输出的变化,所以比Mealy型机要多等待一个时钟周期。

8、简要描述FPGA的开发流程。

FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。

Xilinx公司提供了FPGA开发软件ISE,这是一个集成的开发环境。

用户可以在ISE工程管理器—ProjectNavigator界面的统一管理下,完成所有的设计输入、仿真、综合、布线、下载等工作,而且其中集成了强大的仿真工具ModelSim。

9、组合电路和时序电路的区别。

时序电路:

它是由最基本的逻辑门电路加上反馈逻辑回路(输出到输入)或器件组合而成的电路,与组合电路最本质的区别在于时序电路具有记忆功能。

时序电路的特点是:

输出不仅取决于当时的输入值,而且还与电路过去的状态有关。

它类似于含储能元件的电感或电容的电路,如触发器、锁存器、计数器、移位寄存器、储存器等电路都是时序电路的典型器件。

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”过程块中进行描述,这样在综合时可以减少一些不必要的寄存器。

15、EPGA的中文意思是什么?

完全由用户通过软件进行配置和编程,从而完成某种特定的功能,并且可以反复擦写。

16、所谓敏感信号表达式。

即当该表达式中的变量的值改变时,就会引发块内语句的执行always过程语句的敏感信号可以分为两种类型:

一种为边沿敏感型、一种为电平敏感型。

“always”过程语句通常是带有触发条件的,触发条件写在敏感信号表达式中,只有当触发条件满足时,其后的“begin-end”块语句才能被执行。

下面讨论敏感信号表达式“event-expression”的含义以及如何写敏感信号表达式IP核的感念和分类。

所谓敏感信号表达式,又称事件表达式或敏感信号列表,即当该表达式中变量的值改变时,就会引发块内语句的执行。

因此,敏感信号表达式中应列出影响块内取值的所有信号。

若有两个或两个以上信号,它们之间用“or”连接。

always@(posedgeclkorposedgeclr)

//两个敏感信号都是边沿敏感型

always@(aorb)

//两个敏感信号都是电平敏感型

always@(posedgeclkorclr)

//不建议这样用,最好不要将边沿敏感型和电平

//敏感型列在一起

17、每个Verilog程序包括4个主要部分:

模块声明、端口定义、信号类型说明和逻辑功能描述。

1)模块声明:

模块声明包括模块名字和模块输入、输出端口列表。

其格式如下:

module模块名(端口1,端口2,端口3……);模块结束的标志为关键字:

endmodule。

2)端口(Port)定义:

对模块的输入、输出端口要明确说明,其格式为:

端口是模块与外界或其他模块连接和通信的信号线,如图所示:

有三种类型的端口:

输入端口(input)、输出端口(output)和输入/输出端口(inout).

3)信号类型声明:

对端口的输入输出除了要明确说明外,还要进行信号数据类型的定义。

Verilog语言提供了各种信号类型,分别模拟实际电路中的各种物理连接和物理实体。

常用的数据类型包括连线型(wire)、寄存器型(reg)两种。

如果信号的数据类型没有定义,则综合器将其默认为wire型。

注:

输入端口和双向端口不能声明为寄存器型

4)逻辑功能定义:

模块中最核心的部分是逻辑功能定义。

有多种方法可在模块中描述和定义逻辑功能,还可以调用函数(function)和任务(task)来描述逻辑功能。

下面介绍定义逻辑功能的几种方法。

用“assign”持续赋值语句定义:

“assign”语句一般用于组合逻辑的赋值,成为持续赋值语句。

如:

assignF=~((A&B)|(C&D));

这种方法简单,只需将逻辑表达式放在关键字“assign”后即可。

18、VerilogHDL所描述的信号通常有4种基本逻辑状态:

高电平、低电平、高阻态和不确定状态。

VerilogHDL有下面4种基本逻辑状态:

0:

低电平、逻辑0或逻辑非;1:

高电平、逻辑1或“真”;x或X:

不确定或未知的逻辑状态;z或Z:

高阻态。

这四种值的解释都内置于语言中。

如一个为z的值总是意味着高阻抗,一个为0的值通常是指逻辑0;在门的输入或一个表达式中为“z”的值通常解释成“x”。

此外x值和z值都是不分大小写的,也就是说,值0x1z与值0X1Z相同。

19、VerilogHDL中的标识符可以是任意一组字母、数字、$符号好_(下划线)符号的组合,但标识符的第一个字符必须是字符或者下划线。

2、有效的字符:

包括26个英文字母,(大小写都包括),数字包括0~9以及“$”

和下划线“”等,或它们的组合。

标识符最长可以包含1023个字符。

2、任何标识符必须以英文字母或下划线开头。

3、必须是单一划线“”,且前后都必须有英文字母或数字。

4、标识符中的英语字母区分大小写。

5、允许包含图形符号,也允许包含空格符。

20、在VerilogHDL中存在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语句;

或foreverbegin……endforever循环语句连续不断地执行后面的语句或语句块,常用来产生周期性的波形,作为仿真激励信号,for语句一般用在initial过程语句中,若要用它来进行模块描述,可用disable语句进行中断。

21、有限状态机及其设计技术是实用数字系统设计的重要组成部分。

从信号的输出方式。

有Moore型和Mealy两类状态机。

Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步;Moore型机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟使状态发生时才导致输出的变化,所以比Mealy型机要多等待一个时钟周期。

22、简要描述FPGA的开发流程。

FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。

Xilinx公司提供了FPGA开发软件ISE,这是一个集成的开发环境。

用户可以在ISE工程管理器—ProjectNavigator界面的统一管理下,完成所有的设计输入、仿真、综合、布线、下载等工作,而且其中集成了强大的仿真工具ModelSim。

23、组合电路和时序电路的区别。

时序电路:

它是由最基本的逻辑门电路加上反馈逻辑回路(输出到输入)或器件组合而成的电路,与组合电路最本质的区别在于时序电路具有记忆功能。

时序电路的特点是:

输出不仅取决于当时的输入值,而且还与电路过去的状态有关。

它类似于含储能元件的电感或电容的电路,如触发器、锁存器、计数器、移位寄存器、储存器等电路都是时序电路的典型器件。

24、Verilog语言与C语言特点比较。

(1)Verilog是一种硬件语言,最终是为了产生实际的硬件电路或对硬件电路进行仿真;而C语言是一种软件语言,是控制硬件来实现某些功能的语言。

(2)C语言只要是语法正确,都可以编译执行;而Verilog语言有可综合的限制,即在所有的Verilog语句中,只有一部分可以被综合,而另外的部分则不能被综合,只能用来仿真。

(3)C语言是一种软件编程语言,其基本思想是语句的循序执行;而Verilog语言的基本思想是模块的并行执行。

(4)利用Verilog编程时,要时刻记得Verilog是硬件语言,要时刻将Verilog与硬件电路对应起来。

25、Verilog语言中的函数使用时的注意事项有哪些、任务使用的注意事项有哪些。

二者之间的区别。

6函数:

函数的定义和调用须在一个module模块内

7函数只允许有输入变量,且必须至少有一个输入变量,输出变量由函数名本身担任。

因此在定义函数时,需对函数名说明其类型和位宽。

8定义函数时,没有端口名列表,但调用函数时,需列出端口名列表,端口名的排序和类型必须与定义时的相一致,这点与任务相同。

9函数可以出现在连续赋值assign的右端表达式中。

10函数不能调用任务,而任务可以调用别的任务和函数,且调用任务和函数个数不受限制。

5任务:

任务的定义与调用须在一个module模块内

6定义任务时,没有端口名列表,但需要紧接着进行输入、输出端口和数据类型的说明

7当任务被调用时,任务被激活。

任务的调用与模块调用一样通过任务名调用来实现。

调用时,需列出端口名列表,端口的排序和类型必须与任务定义中的一致

8一个任务可调用别的任务和函数,可以调用的任务和函数个数不限。

任务和函数的合理使用会使程序显得结构清晰而简洁,一般的综合器对task和function都是支持的,但也有的综合器不支持task,需要在使用的时候加以注意。

26、阻塞赋值与非阻塞赋值的特点。

阻塞赋值:

阻塞赋值语句,从字面上理解,该条语句阻塞了下面语句的执行,“=”用于阻塞的赋值,凡是在组合逻辑(如在assign语句中)赋值的请用阻塞赋值。

非阻塞赋值:

非阻塞赋值操作符用小于等于号(即<=)表示,只能用于对寄存器类型变量进行赋值,因此只能用在“initial”和“always”等过程块中,不能用在assign语句中。

在同一个进程块中,最好不要同时用阻塞赋值和非阻塞赋值语句。

27、同步复位与异步复位操作的区别。

同步是指与时钟同步,即时钟触发条件满足时检测清零信号是否有效,有效则在下一个时间周期的触发条件下,执行清零;异步是清零信号有效时,无视触发脉冲,立即清零。

同步信号可以过滤掉不正确状态跳变对逻辑的影响,但是需要保证有效输入信号在时钟信号跳变前完成跳变,否则输入信号就是无效的。

异步信号则和同步信号的效果正好相反。

使用时请根据实际情况考虑。

28、数码管显示、自动售饮料机。

对于输入币值变化的判断,采用if-else语句来判断。

整个描述用一个过程块加以表示。

有限状态机从本质上讲是由寄存器和组合逻辑构成的时序电路,各个状态之间的转移总是在时钟的触发下进行的,也可以在设计时将时序逻辑部分和组合逻辑部分分在两个“always”过程块中进行描述,这样在综合时可以减少一些不必要的寄存器。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2