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

硬件描述语言verilog简答题

硬件描述语言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-Blaster。

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-stated

Verilog语言进行电路设计的方法:

(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);

endmodule

module 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);

endmodule

2)设计一个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)

begin

case(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;endmodule

3)设计一个3位的5选1多路选择器到7段数码管显示其输出结果,我们使用系统中的SW17-SW0作为输入,7段数码管的HEX0作为输出。

module Chose1(cin,cout,del);

input [2:0] cin;

output [6:0] cout;

output del;

reg [6:0] cout;

reg del;

always @ (cin)

begin

del=0;

case(cin)

3'b000:cout<=7'b1111_110;

3'b001:cout<=7'b0110_000;

3'b010:cout<=7'b1101_101;

3'b011:cout<=7'b1111_001;

3'b100:cout<=7'b0110_011;

default cout<=7'b1001_111;

endcase

end

endmodule

VHDL实验报告

《创新实验》实验报告 —基于VHDL的编程和硬件实现

一、实验目的 1.熟悉和掌握硬件描述语言VHDL的基本语法及编写; 2.掌握软件Xilinx ISE 10.1的使用; 3.熟悉SDZ-6电子技术实验箱的使用; 4.了解节拍脉冲发生器等基本电路的实现; 5.了解八位二进制计数器的功能与设计; 6.学习键盘和七段数码管显示的控制和设计。 二、实验内容 1.Xilinx ISE 10.1软件的使用; 2.节拍脉冲发生器等基本电路的实现; 3.八位二进制计数器的实现 4.键盘扫描及显示的实现 三、实验器材 1、PC机 2、SDZ-6电子技术实验箱 3、正负5V电源 4、I/O接口线 四、软件的使用 在安装Xilinx10.1软件时,需要一个ID号,其实这个ID号是可以重复使用的,几个同学在官网注册后就可以共享ID号了。 安装完成之后就可以使用这个软件编写相应的VHDL的程序。 1.新建工程 File—>New Project 弹出下面的对话框 输入工程名后单击Next。然后根据本实验的实验箱进行以下设置。

以后的步骤一般都是单击Next(有些资料上会介绍有些这些步骤的具体功能,但对于本实验不必用到),最后单击Finish,完成新建一个工程。在窗口的左边会出现刚刚新建的工程,如下: 2.新建一个VHDL的源文件。 在上图中,右击工程选择New Source ,弹出如下对话框。

在对画框的左边选择VHDL Module,输入文件的名字(改名字最好是你定义的实体的名字)。单击Next。出现下面的对话框。 该对话框主要是对外部端口的编辑。可以直接跳过,即单击Next,在源文件上编辑端口。然后在接下来的对话框中单击Finish。完成建立一个源文件。窗口右边就会出现刚才编辑的源文件。 3.编写和编译代码 将事先编好的代码复制到源文件里,然后保存文件。 选中左边的文件名,在窗体的左边出现如下编辑文档内容。

可编程逻辑器件与硬件描述语言

组合逻辑电路实验(一)实验报告 一.实验名称:3-8译码器设计 二.实验目的 1.掌握ISE 开发工具的使用,掌握FPGA 开发的基本步骤; 2.掌握组合逻辑电路设计的一般方法; 3.掌握程序下载方法,了解UCF 文件的格式; 4.初步了解开发板资源,掌握开发板使用方法。重点了解滑动开关和LED 显示灯的使用方法。 三.实验内容 1.用VHDL 实现3-8译码器模块 译码器电路如图2-1所示。其功能如表2-1所示。试用VHDL 实现该译码器,并在开发板上进行检验。 表2-1 译码器功能表 EN A B C Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 3-8 译码器 A B C EN Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 图2-1 3-8译码器

0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 2.将程序下载到FPGA并进行检验 (1)资源使用要求:用滑动开关SW3~SW1作为输入A,B,C;滑动开关SW0控制EN;8个LED灯表示8个输出。 (2)检验方法:当SW0处于ON(EN=1)位置时,所有LED灯灭;当SW0处于OFF(EN=0),反映当前输入的译码输出在LED灯上显示,即当输入为000(滑动开关SW3-SW1处于OFF状态),LED0亮,其它灯灭,等等。 四.实验步骤 1.启动ISE,新建工程文件,编写3-8译码器的VHDL模块; 2.新建UCF文件,输入位置约束; 3.完成综合、实现,生成下载文件; 4.连接开发板USB下载线,开启开发板电源; 5.下载到FPGA; 6.拨动开关,验证结果是否正确。 五.主要vhdl代码 architecture Behavioral of coder_38 is --3-8译码器行为级描述signal x:STD_LOGIC_VECTOR (2 downto 0); begin x <= A&B&C;

verilog硬件描述语言 上机

《硬件描述语言》上机作业西电微电子 \

第一题:用Verilog语言的结构描述和行为描述分别设计下面的电路。 A[0] Array B[0] A[1] B[1] A[2] B[2] 结构描述: 电路设计: module hw1(A,B,Y); input[2:0] A,B; output Y; wire w1,w2,w3; xor U1(w1,A[0],B[0]); xor U2(w2,A[1],B[1]); xor U3(w3,A[2],B[2]); nor U4(Y,w1,w2,w3); endmodule 仿真测试: module test_hw1; reg[2:0] A,B; wire Y; hw1 U1(A,B,Y); initial begin A=3'b000;B=3'b000; #50 A=3'b000;B=3'b000; #50 A=3'b111;B=3'b111; #50 A=3'b000;B=3'b110;

#50 A=3'b111;B=3'b000; #50 A=3'b110;B=3'b110; #50 A=3'b011;B=3'b010; #50 A=3'b001;B=3'b011; #50 A=3'b111;B=3'b010; #50 $stop; end initial $monitor($time,"\tA=%d\tB=%d\tY=%d",A,B,Y); Endmodule 行为描述: 电路设计: module hw2(A,B,Y); input[2:0] A,B; output Y; wire Y; assign Y=~((A[0]^B[0])||(A[1]^B[1])||(A[2]^B[2])); endmodule 仿真测试:

关于硬件描述语言(VHDL和Verilog)概要

关于硬件描述语言【VHDL和Verilog】 随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog HDL。 究竟选择VHDL还是verilog HDL? 这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。选择何种语言主要还是看人的使用习惯。如果您是集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。 学习HDL的几点重要提示 1.了解HDL的可综合性问题: HDL有两种用途:系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(即程序的功能可以用硬件电路实现)。不可综合的HDL语句在软件综合时将被忽略或者报错。应当牢记一点:“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。” 2. 用硬件电路设计思想来编写HDL: 学好HDL的关键是充分理解HDL语句和硬件电路的关系。编写HDL,就是在描述一个电路,写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。要做到这一点,需要多实践,多思考,多总结。 3.语法掌握贵在精,不在多: 30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,

硬件描述语言及器件实验指导书

硬件描述语言及器件实验指导书 电子科学与技术专业组

第1章实验一用硬件描述语言的方法设计一个三输入与门电 路 一、实验目的 1、掌握MAX+plusII的使用方法。 2、掌握VHDL语言程序的基本结构。 2、掌握使用硬件描述语言设计数字电路的方法和步骤。 3、掌握用硬件描述语言设计三输入与门电路的方法。 二、实验器材 1.台式计算机1台。 2.可编程逻辑逻辑器件实验软件1套。 3.下载电缆一套。 4.示波器一台。 三、实验说明 1.台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。 2.可编程逻辑逻辑器件实验软件向原理图的设计提供平台,并将调试好的原理图下载到可编程逻辑逻辑器件中。 3.下载电缆是可编程逻辑器件软件和可编程逻辑逻辑器件之间的接口电缆,为了便于区别,用不同颜色导线区分下载电缆的电源、地和信号,一般用红色导线接电源,用黑色导线接地。 4.示波器用于观察可编程逻辑器件执行程序时输出信号的变化。 四、实验内容与要求 用硬件描述语言的方法设计一个三输入与门电路,要求: (1)根据三输入与门的逻辑表达式,在构造体中直接使用并行赋值语句实现,并进行仿真;

(2)根据三输入与门的真值表,在构造体中使用进程语句实现,并进行仿真; 五、实验步骤(下面七个的实验的软件的使用具体步骤跟本次试验一样不再详述) 1.打开新建菜单选择“textedtiorfile”,这个文件是写程序编程用的。 2.程序写完后点“保存”,注意(1)保存的格式是.vhd,(2)保存的地址不能是桌面和硬盘的根目录,否则在后面的编程将出现错误。

3.在file→projectset→projecttocurrentfile,这步是将文件设置在工程里,能够正常编译和下载。

蔡觉平老师西电Verilog HDL上机大作业(硬件描述语言)_微电子学院

《Verilog HDL 数字集成电路设计原理与应用》上机作业 班级:******* 学号:******* 姓名:******* 题目1:数字集成电路的verilog HDL 描述与仿真。 要求:(1)学习使用Modelsim 设计和仿真软件; (2)练习教材7.2.1中的例子; (3)掌握设计代码和测试代码的编写; (4)掌握测试仿真流程; (5)掌握Modelsim 软件的波形验证方式。 解答: 题目2: 简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号对应的程序代码 A B

解答: (1)begin-end语句块和fork-join语句块的区别: 1、执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行; 2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间; 3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间; 4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join语句块为执行时间最长的那条语句执行结束的时间; 5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join语句块为电路上电后,各电路模块同时开始工作的过程。 (2)程序代码: Begin-end语句: module initial_tb1; reg A,B; initial begin A=0;B=1; #10 A=1;B=0; #10 B=1; #10 A=0; #10 B=0; #10 A=1;B=1; end endmodule Frk-join语句: module wave_tb2; reg A,B; parameter T=10; initial fork A=0;B=1; #T A=1;B=0; #(2*T) B=1; #(3*T) A=0; #(4*T) B=0; #(5*T) A=1;B=1; join endmodule

课程名称FPGA与硬件描述语言

课程名称:FPGA与硬件描述语言 课程编码:7002301 课程学分:2学分 课程学时:32学时 适应专业:电子信息工程、电子信息工程(理工科实验班) 《FPGA与硬件描述语言》 FPGA and Hardware Describing Language 教学大纲 一、课程性质与任务 性质:本课程的授课对象为电子信息工程专业二年级本科生,课程属性为专业基础必修课,该课程讲授FPGA基本原理及结构,先进的硬件描述语言(VHDL语言),FPGA设计与应用等知识。 任务:通过对(VHDL)硬件描述语言,FPGA设计等知识的学习,掌握硬件描述语言,FPGA设计的基本知识。培养学生动手能力以及解决实际问题的能力。理解VHDL语言,学会FPGA设计方法等。 二、课程教学基本内容及要求 第一章绪论VHDL的数据和表达式 (一)教学基本要求: 掌握:VHDL程序的特点,VHDL的数据,VHDL的表达式。 了解:FPGA基本原理及结构。 (二)教学基本内容: 绪论:FPGA基本原理及结构 第一章VHDL的数据和表达式 1.1 VHDL程序的特点 1.2 VHDL程序的基本结构 1.3 VHDL的数据 1.4 VHDL的表达式 第二章VHDL的顺序描述语句 (一)教学基本要求: 掌握:信号赋值语句和变量赋值语句,if语句,case语句,null语句。 理解:loop语句。 (二)教学基本内容:

第二章VHDL的顺序描述语句 2.1信号赋值语句和变量赋值语句 2.2 if语句 2.3 case语句 2.4 loop语句 2.5 null语句 第三章VHDL的并行描述语句 (一)教学基本要求: 掌握:进程语句,并发信号赋值语句,元件例化语句。 理解:条件信号赋值语句,选择信号赋值语句。 了解:生成语句。 (二)教学基本内容: 第三章VHDL的并行描述语句 3.1进程语句 3.2并发信号赋值语句 3.3条件信号赋值语句 3.4选择信号赋值语句 3.5元件例化语句 3.6生成语句 第四章VHDL的时钟信号描述方法 (一)教学基本要求: 掌握:时钟的VHDL描述方法,时序电路中复位信号的VHDL描述方法。(二)教学基本内容: 第四章VHDL的时钟信号描述方法 4.1时钟信号的VHDL描述方法 4.2时序电路中复位信号的VHDL描述方法 第五章VHDL的有限状态机的设计 (一)教学基本要求: 掌握:有限状态机的基本概念及应用。 理解:一个Moore型有限状态机的设计实例 (二)教学基本内容: 第五章VHDL的有限状态机的设计 5.1 有限状态机的基本概念 5.2一个Moore型有限状态机的设计实例

数字电子技术实验报告_基于Quartus II的硬件描述语言电路设计

数字电子技术基础 实验报告 题目:实验四基于Quartus II的硬件描述语言电路 设计 小组成员: 小组成员:

一、实验四基于Quartus II的硬件描述语言电路设 计 一、实验目的 1)学习并掌握硬件描述语言VHDL;熟悉门电路的逻辑功能,并用硬件描述语言 实现门电路的设计。 2)熟悉中规模器件译码器的逻辑功能,用硬件描述语言实现其设计。 3)熟悉时序电路计数器的逻辑功能,用硬件描述语言实现其设计。 4)熟悉分频电路的逻辑功能,并用硬件描述语言实现其设计。 二、实验要求 要求1:参考“参考内容1”中给出的与门源程序,编写一个异或门逻辑电路。1)用QuartusII波形仿真验证;2)下载到DE0开发板验证。 要求2:参考“参考内容2”中给出的将8421BCD码转换成0-9的七段码译码器源程序,编写一个将二进制码转换成0-E的七段码译码器。1)用QuartusII波形仿真验证;2)下载到DE0开发板,利用开发板上的数码管验证。 要求3:参考“参考内容3”中给出的四位二进制计数器的源程序,编写一个计数器实现0-E计数。用QuartusII波形仿真验证; 要求4:参考“参考内容4”中给出的50M分频器的源程序,编写一个能实现占空比50%的5M和50M分频器即两个输出,输出信号频率分别为10Hz和1Hz。下载到DE0开发板验证。(提示:利用DE0板上已有的50M晶振作为输入信号,通过开发板上两个的LED灯观察输出信号)。电路框图如下:

要求5:利用已经实现的VHDL模块文件,顶层文件采用原理图设计方法,实现0-E计数自动循环显示,频率1Hz和10Hz可以切换。(提示:如何将VHDL模块文件在顶层原理图文件中引用,参考参考内容5) 三、实验设备 (1)电脑一台; (2)数字电路实验箱; (3)数据线一根。 四、实验原理 1.VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。 2.VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。 3.VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。 4.VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。

专科《硬件描述语言和数字系统设计》_试卷_答案

专科《硬件描述语言和数字系统设计》 一、(共36题,共150分) 1. reg类型的数组通常用于描述存储器,reg [15: 0] MEM [0:1023];定义存储器字的位数为(2分) A.1024 B.16 C.16384 D.1040 .标准答案:B 2. 下列关于同步有限状态机的描述错误的是()(2分) A.状态变化只能发生在同一个时钟跳变沿; B.状态是否变化要根据输入信号,只要输入条件满足,就会立刻转入到下一个状态。 C.在时钟上升沿,根据输入信号的变化,确定电路状态 D.利用同步状态机可以设计出极其复杂灵活的数字逻辑电路系统 .标准答案:B 3. 关于如下描述,正确的说法是 ( ) (2分) A.这种描述是错误的 B.该电路不可综合 C.该电路不可综合,但生成的不是纯组合逻辑 D.以上说法都不对 .标准答案:D 4. 下列关于流水线的描述错误的是( ) (2分) A.流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法; B.设计流水线目的是提高数据吞吐率 C.流水线缩短了在一个时钟周期内给的那个信号必须通过的通路长度,从而可以提高时钟频率 D.增加流水线长度可以节省更多延迟,流水线越长,首次延迟越大,系统频率就会降低。 .标准答案:D 5. 以下关于Top-Down的设计方法不正确的描述是( ) (2分) A.Top-Down的设计方法首先从系统设计入手; B.Top-Down设计中的系统总体仿真与所选工艺有关 C.Top-Down的设计方法从顶层进行功能划分和结构设计 D.自顶向下的设计方法可以早期发现结构上的错误 .标准答案:B 6. 在verilog中,下列哪些操作一定是单bit?()(2分) A.== B.^ C.> D.&&  .标准答案:A,B,C,D 7. 下面哪些是verilog的关键字()(2分) A.input B.assign C.write D.module .标准答案:A,B,D 8. 全球主要的FPGA厂家有()(2分) A.Xilinx B.Altera C.Broadcom https://www.doczj.com/doc/5c18507720.html,ttice .标准答案:A,B,D 9. 大规模数字逻辑设计原则,正确的说法有()(2分) A.异步设计原则 B.组合时序电路分开原则 C.面向RTL的原则 D.先电路后代码的原则 .标准答案:B,C 10. 下面有关SRAM,DRAM的叙述,正确的有()(2分) A.DRAM存储单元的结构比SRAM简单 B.DRAM比SRAM成本高 C.DRAM比SRAM速度快 D.DRAM要刷新,SRAM不刷新 .标准答案:A,D 11. 阻塞赋值与非阻塞赋值的差别及其各自的使用环境。(10分)标准答案:非阻塞(non-blocking)赋值语句(b

硬件描述语言与FPGA技术实验指导书(2012版)

《硬件描述语言与FPGA技术》 实验指导书 西北工业大学 2012/10/10

目录 实验一简单的组合逻辑设计 (3) 实验二简单分频时序逻辑电路的设计 (6) 实验三利用条件语句实现计数分频时序电路 (9) 实验四阻塞赋值与非阻塞赋值的区别 (12) 实验五用always块实现较复杂的组合逻辑电路 (16) 实验六在Verilog中使用函数 (20) 实验七在Verilog HDL中使用任务(task) (23) 实验八利用有限状态机进行时序逻辑的设计 (27) 实验九利用状态机实现比较复杂的接口设计 (32) 练习十利用SRAM设计一个FIFO (39)

实验一简单的组合逻辑设计 一、实验目的 1. 学习Quartus和ModSim两种EDA工具的使用方法; 2.掌握基本组合逻辑电路的实现方法; 3.初步了解两种基本组合逻辑电路的生成方法; 4.学习测试模块的编写; 5.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验内容 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 三、实验仪器、设备 预装了开发工具ModelSimSE、synplify的PC机。 四、实验原理 1.组合逻辑电路是指在任何时刻,输出状态只决定于同一时刻各输入状态的组合而与 电路以前状态无关,而与其他时间的状态无关。其逻辑函数如下: Li=f(A1,A2,A3……An) (i=1,2,3…m) 其中,A1~An为输入变量,Li为输出变量。 2.组合逻辑电路的特点归纳如下: ① 输入、输出之间没有返馈延迟通道; ② 电路中无记忆单元。 3.组合逻辑设计示例:可综合的数据比较器。它的功能是比较数据a与数据b,如果 两个数据相同,则给出结果1,否则给出结果0。描述组合逻辑时常使用assign 结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格 式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b);

硬件描述语言范例

硬件描述语言语言设计实例 1、8-3编码器 module encode_verilog ( a ,b ); input [7:0] a ; //编码器输入 wire [7:0] a ; output [2:0] b ; //编码器输出 reg [2:0] b; always @ ( a ) begin case ( a ) //编码器某一输入端口为高电平输出相应的3位二进制数 8'b0000_0001 : b<=3'b000; //0 8'b0000_0010 : b<=3'b001; //1 8'b0000_0100 : b<=3'b010; //2 8'b0000_1000 : b<=3'b011; //3 8'b0001_0000 : b<=3'b100; //4 8'b0010_0000 : b<=3'b101; //5 8'b0100_0000 : b<=3'b110; //6 8'b1000_0000 : b<=3'b111; //7 default : b<= 3'b000; //其他情况编码器输出3’b000 endcase end endmodule 2、8-3优先编码器 module p_encode_verilog ( A ,I ,GS ,EO ,EI ); //编码器以低为有效 input [7:0] I ; //编码器输入 wire [7:0] I ; input EI ; //输入使能,EI=0时,编码器正常工作 wire EI ; output [2:0] A ; //编码器输出 reg [2:0] A ; output GS ; //优先编码器工作状态标志,编码器的八个输入端有信号输入时,GS=0 reg GS ; output EO ; //输出使能, reg EO ; always @ ( I or EI ) if ( EI ) //使用if、else if表明条件的优先级顺序 begin A <= 3'b111; GS <= 1; EO <= 1; end else if ( I[7] == 0 ) begin A <= 3'b000;

硬件描述语言考试

1.fpga的中文含义:现场可编辑门阵列。Pld 的中文含义:复杂的可编辑逻辑器件。 2.数字电路从结构上可分为:组合逻辑电路和时序逻辑电路两部分。 3.一般讲:fpga是基于sram工艺的,cpld则是基于E2CMOS工艺的。 4.Altera公司的cyclone2系列fpga基本逻辑原件le主要包含一个寄存器和一个查找表。 5.Fpga一般支持JTAG和AS,PS配置方式。 6.简述cpld和fpga的区别: Cpld是复杂的可编辑逻辑器件,多为乘积项结构,触发器数量少,一般基于E2CMOS工艺,断电后程序不消失。规模小,逻辑复杂程度地。保密性好。成本低。主要用于实现简单的逻辑功能。FPGA是现场可编辑逻辑门阵列,多为寄存器加查找表结构,触发器数量多。一般基于SRAM工艺,断电后程序消失。规模大,逻辑复杂程度高,保密性较差,成本高。主要用来实现复杂的时序功能。 7.解释流水线设计方法根据原始组合逻辑电路和框图,将原始组合电路理解成多级电路级联方式。 确定系统的主要元器件估计这些元器件的相关传播延迟。 将电路划分为传播延迟相似或相等的多级。 确定需要跨级传播的信号。在每一集中插入寄存器,实现流水线设计。 8.简述HDl代码的综合 过程 翻译:综合软件读取RTL 代码并将其转换成门级 网表;翻译过程要确保 门级的输入输出关系与 RTL级描述的输入输出 关系保持一致。 优化:对门级网表进行 优化,优化是个选代搜 索的过程,并不是求解 过程,因此综合软件 的优化只是局部优化。 映射:采用器件库内的 标准原件或者FPGA内 部的逻辑单元实现优化 后的门级网表 9.解释吞吐率,延迟的 概念: 吞吐率: 延迟:从输入发生改变 时刻起,到输入发生改 变时刻止所经历的时 间。 10.成为IEEE标准的硬 件描述语言有VHDL和 Verilog HDL两种。 11.有限状态机可分为 米利型和摩尔型两种。 12.Verilog HDL支持两 种类型的变量,线网和 寄存器。 13.Verilog 的方针一 般分为激励电阻和实挒 化两种。综合过程也分 为两个步骤:行为级仿 真和功能仿真。 14.简述基于HDL的数 字系统设计的典型流程 设计要求说明,行为级 描述,行为级仿真,设 计正确?RTL级描述, 功能验证(仿真),设计 正确?逻辑综合时序验 证,布局和布线。仿真 及时序分析, 满足设计要求?FPGA 或者ASIC 15.解释阻塞赋值语句 和非阻塞赋值语句的区 别。 阻塞赋值语句首先计算 复制表达式,之后将计 算结果赋值给左侧变 量,过程连续执行,完 成赋值前不能执行其后 的其他任何语句,该语 句的执行阻塞其后的其 他语句的执行。 非阻塞赋值语句,执行 时,首先计算表达式的 值,但并不立刻将值赋 予左侧变量,赋值操作 会在always块所有语句 执行完后再赋值。复制 过程不会阻塞其后的其 他语句的执行。 16.简述组合逻辑电路 设计的一般原则。 只在一个always块中, 对同一个变量赋值(避 免竞争)。 连续赋值语句,模块实 挒和电平敏感的always 实现组合逻辑电路。 Always块采用电平敏 感的敏感列表或者直接 采用always@*形式的 敏感列表。 Always块内部采用阻 塞赋值语句。 确保在所有的条件分支 都对输出变量赋值。 确保在if和case语句 中,覆盖所有的条件分 支。 A.在if语句中使用else 子句;在case语句中使 用defauit候选项。 B.在always块开始,为 输出信号赋予默认值 17.简述时序逻辑电路 设计的一般原则。 寄存器和组合逻辑单独 描述。 寄存器采用具有边沿敏 感列表的always块实 现,在always块内采用 非阻塞赋值语句。 组合逻辑采用电平敏感 的always块实现,内部 采用阻塞赋值语句。 遵循同步时序逻辑 veriloghdl描述模板。 避免使用门控时钟和导 出时钟。 18.简述标示符的命名 规则。 标示符的首字母必须是 字母或者下划线。一般 要求标示符是描述性 的。前后统一的命名规 则可以提高代码的可读 性,有助于代码的调试, 检查,维护和修改。 Verilog hdl对大小写敏 感。 19.传播延时。 反相器的传播延时:从 输入信号发生电平改变 的百分之50时刻起,到 相应的输出信号也发生 改变的百分之50点为 止所需要的时间。 后果:由于门电路存在 一定的传播延时,可能 导致电路的输出产生错 误或者不期望的输出, 一般称为毛刺。一般不 会出现,由于噪声或者 其他原因影响出现错误 逻辑电平。 20.时序分析是数字电 路设计的关键。同步时 序逻辑电路的所有寄存 器由同一个全局时钟信 号控制,状态寄存器的 状态更新只在时钟信号 的上升沿发生,时钟分 析只要考虑电路的关键 路径即可。时序逻辑电 路的最高工作频率由电 路的最坏延迟路径决 定。延迟路径分三类: 引脚到引脚延迟,时钟 到输出延迟,寄存器到 寄存器延迟,如果包含 输入和输出寄存器,最 高工作频率一般由寄存 器到寄存器延迟决定。 21.优先状态机的典型 结构与规则时序逻辑电 路的典型结构相同,区 别在于瓷胎逻辑的复杂 程度,优先状态机的次 态逻辑相对复杂。 22.寄存器是存储二级 制数码的时序电路部 件,具有接受和寄存二 进制数码的功能。 计数器是用来累积和寄 存输入脉冲个数的时序 逻辑部件,可计数,还 可以对某个频率的时钟 脉冲进行分频。构成时 间分配器或时序发生器 对数字系统进行定时, 程序控制操作,执行数 字计算。 24.如何避免数字电路 中的冒险现象 竞争与冒险是数字电路 中存在的一种现象,竞 争:在组合电路中,信 号经由不同的途径到达 某一汇合点的时间有先 后,。冒险:由于竞争而 引起的电路输出发生瞬 间错误现象,表现为输 出端出现原设计中没有 的窄脉冲,常称之为毛 刺。 竞争-冒险现象对数字 电路工作的可靠性有影 响,消除竞争-冒险现象 主要采用引入封锁脉 冲,引入选通脉冲,接 滤波电容或修改程序设 计,增加选通电路,增 加输出滤波的方法。

VerilogHDL硬件描述语言复习

VerilogHDL硬件描述语言复习 一、 1. Verilog HDL 是在哪一年首次被I E E E标准化的? 2. Verilog HDL支持哪三种基本描述方式? 3. Verilog HDL 是由哪个公司最先开发的? 4. Verilog HDL中的两类主要数据类型什么? 5. U D P代表什么? 6. 写出两个开关级基本门的名称。 7. 写出两个基本逻辑门的名称。 8. 在数据流描述方式中使用什么语句描述一个设计? 9. 采用结构描述方式描述1位全加器。 10. i n i t i a l语句与always 语句的关键区别是什么? 11. 采用数据流方式描述2 - 4译码器。 1 2. 找出下面连续赋值语句的错误。 assign Reset=#2 Sel^WriteBus; 二、 1. 下列标识符哪些合法,哪些非法? C O u n T, 1_2 M a n y, \**1, R e a l?, \wait, Initial 2. 在Verilog HDL中是否有布尔类型? 3. 如果线网类型变量说明后未赋值,其缺省值为多少?

4. Verilog HDL 允许没有显式说明的线网类型。如果是这样,怎样决定线网类型? 5. 下面的说明错在哪里? i n t e g e r [0:3] R i p p l e; 6. Verilog HDL有哪几大类数据类型? 7.Verilog HDL有哪几种寄存器类型? 三、 1. 假定长度为6 4个字的存储器, 每个字8位,编写Verilog 代码,按逆序交换存储器的内容。即 将第0个字与第6 3个字交换,第1个字与第6 2个字交换,依此类推。 2. 假定3 2位总线A d d re s s _ B u s, 编写一个表达式,计算从第11位到第2 0位的归约与非。 3. 假定一条总线C o n t ro l _ B u s [ 1 5 : 0 ],编写赋值语句将总线分为两条总线:A b u s [ 0 : 9 ]和B b u s [ 6 : 1 ]。 4. 编写一个表达式,执行算术移位,将Qparity 中包含的8位有符号数算术移位。 5. 使用条件操作符, 编写赋值语句选择N e x t S t a t e 的值。如果C u rre n t S t a t e的值为R E S E T, 那么N e x t S t a t e的值为G O;如果C u rre n t S t a t e的值为G O,则N e x t S t a t e 的值为B U S Y;如果 C u rre n t S t a t e的值为B U S Y;则N e x t S t a t e的值为R E S E T。 6. 如何从标量变量A,B,C和D中产生总线B u s

硬件描述语言HDL的现状与发展

硬件描述语言HDL的现状与发展 摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内EDA基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。 关键词:ASIC 硬件描述语言HDL Verilog HDL VHDL SystemC Superlog 芯片系统SoC 引言 硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。 目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计。 硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE 标准。 现在,随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像Superlog、SystemC、Cynlib C++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为EDA设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。 1 目前HDL发展状况 目前,硬件描述语言可谓是百花齐放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。 而比较一致的意见是,HDL和C/C++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。 在2001年举行的国际HDL会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2

硬件描述语言08-09B卷标准答案

2008/2009 学年第一学期末考试试题答案及评分标准 (B卷) 硬件描述语言及器件 使用班级:06060241/06060242 一、填空题(30分,每空格1分) 1、试举出两种可编程逻辑器件 CPLD 、 FPGA 。 2、VHDL程序的基本结构至少应包括实体、结构体两部分和对 库的引用声明。 3、1_Digital标识符合法吗?否, \12 @ +\ 呢?合法。 4、在VHDL的常用对象中,信号、变量可以被多次赋予不同的值, 常量只能在定义时赋值。 5、实体的端口模式用来说明数据、信号通过该端口的传输方向,端口模式有 in 、 Out 、 inout 、 buffer 。 6、VHDL语言中std_logic类型取值‘Z’表示高阻,取值‘X’表示不确定。 7、整型对象的范围约束通常用 range 关键词,位矢量用 downto/to 关键词。 8、位类型的初始化采用(字符/字符串)字符、位矢量用字符串。 9、进程必须位于结构体内部,变量必须定义于进程/包/子程序内部。 10、并置运算符 & 的功能是把多个位或位向量合并为一个位向量。 11、进程执行的机制是敏感信号发生跳变。 12、判断CLK信号上升沿到达的语句是 if clk’event and clk = ‘1’ then . 13、 IF 语句各条件间具有不同的优先级。

14、任何时序电路都以时钟为驱动信号,时序电路只是在时钟信号的边沿到来时, 其状态才发生改变。 15、 Moore 状态机输出只依赖于器件的当前状态,与输入信号无关。 二、判断对错并改正(12分,每小题3分) 1、CONSTANT T2:std_logic <= ’0’; (错)改正:把<= 换为:= 。 2、若某变量被定义为数值型变量,未赋初始值时默认值为‘0’。 (错)改正:把‘0’的单引号去掉。 3、在结构体中定义一个全局变量(V ARIABLES),可以在所有进程中使用。 (错)改正:“变量(V ARIABLES)”改为“信号”。 4、语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机变量wr, 可以直接对wr赋值。 (错)改正:语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机类型wr,需要定义一个该类型的对象,才可以对该对象赋值。 三、简答(8分,每小题4分) 1、简述如何利用计数器精确控制时序。 ?只要知道晶振频率f,即可知道周期T=1/f; ?使用一个计数器,可以通过计数值n,精确知道当计数值为n时消耗的时间t=nT; ?上例中以n为控制条件,可以控制其它信号在某时刻变高,某时刻变低,从而产生精 确时序; 例如:

VHDL硬件描述语言实验报告

硬件描述语言实验附录 姓名:xxx 学号:xxx 指导教师:xxx 目录 硬件描述语言实验附录 (1) 实验1.三输入与门电路实验 (2) 实验2. 三—八译码器实验 (3) 实验3. D触发器实验 (4) 实验4. 分频器实验 (5) 实验5. 状态机实验 (8)

实验1.三输入与门电路实验 --三输入与门电路threeinput --姓名:王定 --学号:1306034248 --中北大学 LIBRARY IEEE; --调用库 USE IEEE.STD_LOGIC_1164.ALL;--库文件 -------------------------------------------------------------- ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入 B: IN STD_LOGIC; --输入端口,个位写入使能 C: IN STD_LOGIC; --输入端口,十位写入使能 CO: OUT STD_LOGIC); --输出端口,溢出标志 END ENTITY threeinput; --结束端口定义 -------------------------------------------------------------- ARCHITECTURE RTL OF threeinput IS--定义结构体 BEGIN PROCESS(A,B,C) IS --开始,必须带上 BEGIN CO<=A AND B AND C ; END PROCESS; END ARCHITECTURE RTL; --结束结构体 表1. 三输入与门电路VHDL实验代码 图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出

硬件描述语言实验报告

《硬件描述语言》实验报告 学院: 学号: 姓名: 专业: 实验时间: 实验地点: 指导教师: 年月

实验一简单组合逻辑设计 一、实验目的及要求: 1.掌握基本组合逻辑电路的实现方法。 2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。 4.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤 1.实验内容: 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的测试; (2)编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;(3)观察综合后生成的文件和源文件的不同点和相同点。 (4)综合时采用不同的FPGA器件,观察综合后的结果有什么不同。 四、实验结果与数据处理: 1.RTL图及仿真后波形图:

2.综合后的电路图: 五、分析与讨论: 1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial块有什么关系? 答:测试方法二中的第二个initial用来暂停仿真以便观察仿真波形,它与第一个initial是并行关系 2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?答:如果没有写#10000,仿真会直接停止,没有$stop,仿真不会结束。

3.比较两种测试方法,哪一种更全面? 答:第二种测试方法更全面,测试了更多种的变换的情况。 实验二简单分频时序逻辑电路的设计 一、实验目的及要求: 1.掌握条件语句在简单时序模块设计中的使用; 2.掌握verilog语句在简单时序模块设计中的使用; 3.学习在Verilog模块中应用计数器; 4.学习测试模块的编写、综合和不同层次的仿真。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤: 1.实验内容: (1)使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。得到如下波形图: (2)对模块进行RTL级仿真、综合后门级仿真,布局布线仿真; 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。 (2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。得到波形图。 (3)观察综合后生成的文件和源文件的不同点和相同点。

相关主题
文本预览
相关文档 最新文档