当前位置:文档之家› 硬件描述语言verilog简答题

硬件描述语言verilog简答题

1.assign always initial区别always过程反复执行其中的块语句,而initial过程语句只执行一次。

assign声明用于描述组合逻辑。

在always语句中,“=”表示阻塞赋值,<=表示非阻塞赋值Assign语句应该在always语句外部使用,而且是并行计算值。

在组合逻辑中使用阻塞式赋值,而在时序逻辑中需要使用非阻塞式赋值。

initial语句在模拟开始时执行体内的语句,2.触发器,锁存器,寄存器区别触发器:包括锁存器和寄存器。

锁存器:电平触发的存储单元,在有效电平时间里可以多次改变数据.优点是占触发器资源少,缺点是容易产生毛刺。

在FPGA中用的很少,因为FPGA中触发器的资源非常丰富。

寄存器:边沿触发的存储单元,在上升或下降沿数据变化,一个周期里只能变化一次。

3.测试程序的作用:测试程序是用于测试其他待测试模块的硬件描述语言模块。

此程序包含了向待测试模块提供输入的语句,已测试是否产生了理想的正确输出。

输入和期待的输出模式成为测试向量。

4时序图定义:答:时序图是显示了缓冲器的一个输入改变和随后输出的改变所产生的延迟的图,她描绘了输入改变时缓冲器电路的瞬间响应。

5.两种时序电路,(怎么样判断同步时序电路)同步时序电路:如果一个由多个元件连接构成电路是同步时序电路,需满足:每一个电路元件是寄存器或组合电路,至少有一个电路元件是寄存器所有寄存器接收同一个时钟信号,每一个环路至少包含一个寄存器非同步时序电路称为异步电路。

6.什么是组合电路(组合电路的判断条件),什么是时序电路答:组合电路的输出仅仅取决输入的值。

时序电路的输出取决于当前的输入值和之前的输入值。

组合电路没有记忆,时序电路是有记忆的。

如果一个电路由互相连接的电路组件构成,在满足以下条件时,它就是组合电路。

一,每一个电路组件本身都是组合电路二,每一个电路节点或者是一个电路的输入,或者仅仅连接到一个电路组件的一个输出端口。

三,电路不能包含回路:进过电路的每条路径最多只能经过每个电路一次。

7.MIPS体系结构设计的四个准备/指令格式设计原则4条:简单设计有助于规整化加快常见功能越小的设计越快好的设计需要好的折中8.三种类型的存储器阵列:动态随机存储器(DRAM):以电容的充电和放电来存储位静态随机存储器(SRAM):不需要刷新存储位只读存储器(ROM):以晶体管的存在与否来存储一个位9.传输延迟:是输入改变直到对应的一个或多个输出达到它们最终的值所经历的最长时间最小延迟:当一个输入发生变化到任何一个输出开始改变的最短时间。

组和电路的传输延迟是关键路径上每一个元件的传输延迟之和。

最小延迟是最短路径每个元件的最小延迟之和。

10.数字电路:是一个包含离散电压值输入和输出的模块。

它的规范描述了模块实现的功能和时序。

11. 设计有限状态机的步骤:确定输入和输出;画状态转换图;对于moore型状态机—写出状态转换表—写出输出表对于mealy型状态机---写出组合的状态转换和输出表;选择状态编码为下一个状态写出布尔表达式;画出电路草图1.有限状态机的三个部分答:有限状态机包含下一状态的逻辑和输出逻辑以及一组用于存储状态的寄存器。

有限状态机分为 moore型和mealy型Moore型状态机输出只取决于系统的状态Mealy型状态机输出取决于输入和当前的状态2.同步时序电路的动态约束答:动态约束是指同步时序电路的输入在时钟沿附近的建立和维持孔径时间内必须保持稳定。

建立时间约束保持时间约束3.延迟、吞吐量区别空间并行、时间并行区别这样多个任务就可以在同一时间一起处理。

时间并行是值一个任务呗分成多个阶段,类似于流水线装配线。

2.verilog 行为模型、结构模型模拟、综合区别行为模型描述一个模块做什么。

结构模型用层次化方法描述一个模块怎样由更简单的部件构造模拟:在模拟阶段,在模块上加入输入,并检查输出,以验证模块的操作是否正确综合:把行为级描述的模块通过逻辑网表自动转换为门级形式的模块的称为综合。

四,最小项就是有若干积(“与”构成了最小项,真值表相与取值为1的)的和(或)构成。

是与或式。

五,最大项就是有若干和(“或”构成了最大项,真值表中相或取0的)的积(与)。

是或与式1)如何在Modelsim中设置断点进行断点调试?如何在Modelsim中观察变量的值?运行菜单View->Files,双击HDL文件,打开了代码窗口。

点击行号的右侧,就出现了一个红色的断点。

当然很多行是不能加断点的。

似乎行号为红色,就表示可以加断点。

断点可以disable,enable和删除。

加了断点后,然后重新运行仿真。

运行到断点时就会停止,这时可以在Objects窗口观察各个信号的值。

可以用step按钮进行单步调试。

2)如何在Modelsim中创建自己的资源库?如何引用第三方资源库?多库指在工作库的基础上又增加了一个资源库。

资源库的作用一般有组织管理文件;访问第三方IP;to share common parts between simulations。

创建一个资源库。

找到主modelsim.ini文件。

将其备份。

改变其属性使其属性不再是只读。

打开此文件,在[Library]部分输入资源库链接路径保存文件,并将其属性改回只读。

先创建一个文件夹命名为resource_library,将源文件拷贝进去。

(这个例子的资源库很简单,只包含一个源文件,不过此例子旨在介绍多库的使用流程)。

再创建一个文件夹,命名为testbench,将测试文件拷贝进去。

我们现在建了两个文件夹(目录),来模仿第三方提供的资源库。

打开Modelsim,选择File>Change Directory,将当前目录设置为resource_library。

选择File > New > Library创建资源库,库名为parts_lib。

创建完后,这个库将出现在库窗口。

编译资源库里的源文件。

选择File>Change Directory,将当前目录设置为testbench。

创建工程。

创建工程,将测试文件添加到其中,对其进行编译。

然后对其进行优化vopt +acc test_counter -o testcounter_opt,此时如果是Verilog则会出错,是VHDL则会有警告,原因是此时只有测试文件而没有对应的源文件。

用quit -sim退出仿真。

1)如何在计算机中安装USB驱动程序usb-blaster?1. 将USB连接线一端(方形)连接到USB-Blaster的USB接口,另一端(扁平)连接到插入计算机USB接口。

在桌面的任务栏上将出现提示,指示检测到A ltera USB-Blaster。

2. 稍等片刻出现“找到新的硬件向导”。

3. 选择“是,仅这一次”,点下一步继续。

4. 选择“从列表或指定位置安装”,点下一步继续。

5. 选中“在搜索中包括这个位置”,点浏览按钮找到驱动程序的位置。

驱动程序就位于QuartusII安装目录的drivers/usb-blasater子目录下。

6. 点击“仍然继续”7. 点击“完成”结束驱动的安装。

如果您此时进入到设备管理器,您将看到在通用串行总线控制器列表中,出现了ALTERA USB-Blas ter。

2)如何在Quartus II中分配FPGA引脚?1.在QII软件中,使用“Assignment s -> Remove Assignments”标签,移除管脚分配内容,以确保此次操作,分配的管脚没有因为覆盖而出现错误的情况。

如果在未执行任何管脚分配操作新工程中,可跳过该步骤。

2.使用记事本或类似软件新建一个tcl文件,编写管脚分配内容,注意关键字set_location_assignment和-to法。

3.执行p in.tcl:在QII软件中,使用“View -> Utility Windows -> Tcl Console”标签,打开Quartus II Tcl Console。

执行语句。

4.在QII软件中,选择“A ssignments -> Pin”标签(或者点击按钮),打开Pin Planner,验证管脚是否分配正确。

如何处理暂不用的引脚?将没有使用的引脚定义为高阻:Assignment---->Device---->Device&Pin Option...---->Unused pins---->As inputs,tri-statedVerilog语言进行电路设计的方法:(1)自上而下的设计方法(2)自下而上的设计方法(3)综合设计的方法1)试设计一个二进制加法器电路完成四位二进制加法操作,采用FPGA开发版上的SW[1]-SW[4]作为输入,LEDR[1]-LEDR[5]作为输出。

module AddFour(sum,cout,a,b,cin);input[3:0] a,b ;input cin;output[3:0] sum ;output cout;full_add1 u0(a[0],b[0],cin,sum[0],cin1);full_add1 u1(a[1],b[1],cin1,sum[1],cin2);full_add1 u2(a[2],b[2],cin2,sum[2],cin3);full_add1 u3(a[3],b[3],cin3,sum[3],cout);endmodulemodule full_add1(a,b ,cin,sum,cout);input a,b,cin;output sum,cout;wire s1,m1,m2,m3;and(m1,a,b),(m2,b,cin),(m3,a,cin);xor(s1,a,b),(sum,s1,cin);or(cout,m1,m2,m3);endmodule2)设计一个3-8译码器,输入由波动开关来决定,输出由绿色的发光二极管来显示译码的结果。

module threeeight(data_in,data_out);input[2:0] data_in;output[7:0] data_out;reg[7:0] data_out;always@ (data_in)begincase(data_in)3'b000 : data_out = 8'b0000_0001;3'b001 : data_out = 8'b0000_0010;3'b010 : data_out = 8'b0000_0100;3'b011 : data_out = 8'b0000_1000;3'b100 : data_out = 8'b0001_0000;3'b101 : data_out = 8'b0010_0000;3'b110 : data_out = 8'b0100_0000;3'b111 : data_out = 8'b1000_0000; endcase;end;endmodule3)设计一个3位的5选1多路选择器到7段数码管显示其输出结果,我们使用系统中的SW17-SW0作为输入,7段数码管的HEX0作为输出。

相关主题