文档库 最新最全的文档下载
当前位置:文档库 › EDA实验指导书全(Verilog版)

EDA实验指导书全(Verilog版)

EDA实验指导书全(Verilog版)
EDA实验指导书全(Verilog版)

EDA实验指导书

熊利祥编

武汉理工大学华夏学院

2011年9月

前言

一、实验课目的

EDA实验课是电子工程类专业教学中重要的实践环节,包括了ISE开发环境基本操作及Verilog语言、组合逻辑电路设计、流水灯设计、计数器设计、扫描显示电路的驱动、综合层次性实验——交通灯或数字秒表设计实验。要求学生通过实验学会正确使用EDA技术,掌握FPGA器件的开发,熟练使用ISE开发环境,掌握Verilog 语言的编程,掌握数字电路和系统的设计。

通过实验,使学生加深对课堂专业教学内容的理解,培养学生理论联系实际的能力,实事求是,严谨的科学作风,使学生通过实验结果,利用所学的理论去分析研究EDA技术。培养学生使用EDA实验设备的能力以及运用实验方法解决实际问题的能力。

二、实验要求:

1.课前预习

①认真阅读实验指导书,了解实验内容;

②认真阅读有关实验的理论知识;

③读懂程序代码。

2.实验过程

①按时到达实验室;

②认真听取老师对实验内容及实验要求的讲解;

③认真进行实验的每一步,观察程序代码与仿真结果是否相符;

④将实验过程中程序代码和仿真结果提交给老师审查;

⑤做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。

3.实验报告

①按要求认真填写实验报告书;

②认真分析实验结果;

③按时将实验报告交给老师批阅。

三、实验学生守则

1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西;

2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件;

3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线;

4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。

目录

实验一 ISE开发环境入门_五人表决器 (4)

实验二加法器、乘法器、比较器的设计 (26)

实验三流水灯 (28)

实验四计数器 (30)

实验五综合层次性实验——交通灯设计 (32)

实验六综合层次性实验——数字秒表设计 (34)

附录一 basys 2开发板资料 (36)

实验一ISE开发环境入门

一、实验目的

1.了解ISE开发环境及基本操作。

2.熟悉设计方法和步骤。

3.掌握电路的综合和实现。

4.掌握电路仿真与时序分析。

5.熟悉3/8线译码器工作原理和五人表决器设计。

二、实验内容和基本原理

1.以3/8线译码器为例,总体思路以Basys 2开发板中的三个拨位开关,SW2,SW1,SW0为三个输入信号,可以代表8种不同的状态,该译码器对这8种状态译码,并把所译码的结果在八个发光二级管(LD7~LD0)上显示。

2.输入与输出之间逻辑关系

3.以Basys 2开发板中的五个拨位开关,SW4,SW3,SW2,SW1,SW0为五个输入信号,可以代表五个表决的人,当五个人中有三个以上同意时,则表决通过,并将表决的结果在LD0上显示出来。

4. 其真值表:

5.输入与输出之间逻辑关系

f=abc+abd+abe+acd+ace+ade+bcd+bce+bde+cde;

三、主要仪器和设备

主要仪器和设备:计算机,Basys 2开发板。

图1 Basys 2开发板

四、ISE 开发环境 1、 建立工程。

①选择菜单“File”→“New Preject”。

②进入新建工程向导对话框

点击New Project …

输入工程名字:experiment1

工程所在目录

顶层源文件类型

点击“Next”按纽②点击“Next”后,进入工程设置对话框。

点击“Next”按钮

对如下选项进行设置:

Family:Spartan3E

Device:XC3S100E

Package:CP132

TOP-Level Source:HDL

Synthesis Tool:XST(VHDL/Verilog)Simulator:ISim(VHDL/Verilog)

Preferred Language:Verilog

③点击“Next”后,进入工程摘要对话框。

点击“Finish”按钮④点击“Finish”后,完成工程的创建。

工程名

器件名字

生成了空的工程框

2、建立Verilog源文件。

①选中器件名字,点击鼠标右键,弹出一个快捷菜单。

②选中“New Source ”,进入新建源文件向导对话框,输入文件名。

选中New Source

③点击“Next ”后,进入定义模块对话框,进行端口指定。

选择VHDL Module

输入”experiment ”作为VHDL 模块的名字

点击“Next”按钮

指定端口名

指定端口方向

指定位宽

点击“Next”

④点击“Next”后,进入概要对话框。

点击“Finish”

⑤点击“Finish”后,回到ISE主界面。

生成的experiment1.v文件

添加代码到experiment1.v文件中

⑥输入源程序代码:

module experiment1(

output [7:0] ld,

input [2:0] sw

);

assign ld[0]=~sw[2]&~sw[1]&~sw[0];

assign ld[1]=~sw[2]&~sw[1]& sw[0];

assign ld[2]=~sw[2]& sw[1]&~sw[0];

assign ld[3]=~sw[2]& sw[1]& sw[0];

assign ld[4]= sw[2]&~sw[1]&~sw[0];

assign ld[5]= sw[2]&~sw[1]& sw[0];

assign ld[6]= sw[2]& sw[1]&~sw[0];

assign ld[7]= sw[2]& sw[1]& sw[0];

endmodule

3、综合。

4、仿真。

①先选中Simulation ,然后选中器件名字,点击鼠标右键,弹出一个快捷菜单。

②点击“New Source ”后,进入选择源文件类型对话框。

选中experiment1.v 文件

双击进行综合

③选择关联文件

④概要

⑤进入仿真测试文件编辑窗口

⑥输入测试程序代码

module test;

reg [2:0] sw;

wire [7:0] ld;

experiment1 uut (

.ld(ld),

.sw(sw)

);

initial begin

sw = 8'b000;

#100 sw = 3'b001;

#100 sw = 8'b010;

#100 sw = 8'b011;

#100 sw = 8'b100;

#100 sw = 8'b101;

#100 sw = 8'b110;

#100 sw = 8'b111;

end

endmodule

⑦右键单击“Simulate Behavioral Model”弹出快捷菜单,点击“run”命令。

Verilog编码风格

Verilog编码风格 嵌入式开发2010-05-03 15:28:13 阅读14 评论0 字号:大中小订阅 这是以前公司的对fpga代码编写的要求 良好代码编写风格的通则概括如下: (1)对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用户定义的类型用大写; (2)使用有意义的信号名、端口名、函数名和参数名; (3)信号名长度不要太长; (4)对于时钟信号使用clk 作为信号名,如果设计中存在多个时钟,使用clk 作为时钟信号的前缀; (5)对来自同一驱动源的信号在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连线的名字,端口和连接端口的信号尽可能采用相同的名字; (6)对于低电平有效的信号,应该以一个下划线跟一个小写字母b 或n 表示。注意在同一个设计中要使用同一个小写字母表示低电平有效; (7)对于复位信号使用rst 作为信号名,如果复位信号是低电平有效,建议使用rst_n; (8)当描述多比特总线时,使用一致的定义顺序,对于verilog 建议采用bus_signal[x:0]的表示; (9)尽量遵循业界已经习惯的一些约定。如*_r 表示寄存器输出,*_a 表示异步信号,*_pn 表示多周期路径第n 个周期使用的信号,*_nxt 表示锁存前的信号,*_z 表示三态信号等; (10)在源文件、批处理文件的开始应该包含一个文件头、文件头一般包含的内容如下例所示:文件名,作者,模块的实现功能概述和关键特性描述,文件创建和修改的记录,包括修改时间,修改的内容等; (11)使用适当的注释来解释所有的always 进程、函数、端口定义、信号含义、变量含义或信号组、变量组的意义等。注释应该放在它所注释的代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂; (12)每一行语句独立成行。尽管VHDL 和Verilog 都允许一行可以写多个语句,当时每个语句独立成行可以增加可读性和可维护性。同时保持每行小于或等于72 个字符,这样做都是为了提高代码得可读性; (13)建议采用缩进提高续行和嵌套语句得可读性。缩进一般采用两个空格,如西安交通大学SOC 设计中心 2 如果空格太多则在深层嵌套时限制行长。同时缩进避免使用TAB 键,这样可以避免不同机器TAB 键得设置不同限制代码得可移植能力; (14)在RTL 源码的设计中任何元素包括端口、信号、变量、函数、任务、模块等的命名都不能取Verilog 和VHDL 语言的关键字; (15)在进行模块的端口申明时,每行只申明一个端口,并建议采用以下顺序:

《EDA》实验指导书2013-6-1

辽东学院自编教材 《可编程逻辑器件原理及应用实验》指导书 李海成编 (计算机科学与技术、电子信息工程专业用) 姓名: 学号: 班级: 信息技术学院 2013年6月

目录 目录 (1) 实验一MAX+PLUS-II设计三八译码器......... 错误!未定义书签。实验二半加器 . (2) 实验三带进位输入的8位加法器 (4) 实验四数据比较器 (6) 实验五编码器 (9) 实验六组合逻辑电路的设计 (12) 实验七计数器 (14) 实验八触发器功能的模拟实现 (17)

(被加数)Ai (被加数)Bi (半加和)Hi (本位进位)Ci 实验二 半加器 实验类型: 验证性 实验课时: 2 指导教师: 李海成 时 间:201 年 月 日 课 次:第 节 教学周次:第 周 实验分室: 实验台号: 实 验 员: 一、 实验目的 1.设计并实验一个一位半加器 2.掌握CPLD/FPGA 组合逻辑设计基本方法。 二、 实验原理 计算机中数的操作都是以二进制进位的,最基本的运算就是加法运算。按照进位是否加入,加法器分为半加器和全加器电路两种。计算机中的异或指令的功能就是求两个操作数各位的半加和。一位半加器有两个输入、输出,如图2-1。 图2-1 一位半加器示意图 表2-1 一个半加大路的真值表如表2-1所示,根据真值表可得到半加器的函数表达式: Bi Ai Bi Ai Hi ?+?= Bi Ai Ci ?= 三、 实验连线 半加器的两个输入所对应的管脚同两位拨码开关相连,两个输入管脚名为a 、b ;两个输出所对应的管脚同两位发光二极管相连,两个输出管脚名为 c0和s,其中c0表示进位, s 表示相加结果。 四、

EDA实验指导书

实验一上机学习电路原理图的绘制(2) 一、设计目的 1. 掌握PROTEL软件的安装、运行及卸载,掌握Protel 99 SE的基本操作; 2. 掌握设计管理器的使用和设计环境的设置,熟悉常用元件库和各主要菜单及命令的使用; 3.学习电路原理图的基本绘图方法 二、设计内容 1.设置原理图的环境参数,添加相应的元件库文件 2.绘制课本P92页的一个D/A功能模块电路图,其中由一片12位的D/A、两片运放、一些电阻和电容组成 图1-1 实验1电路原理图实例 三、设计设备和仪器 1.计算机 1 台(CPU要求Pentium 166MHz以上,推荐内存应为16MB以上,显示器分辨率为800×600(或1024×768)模式。) 2.Protel 99SE 软件 四、设计方法 根据电路图加载相应的元件库文件,然后选择放置电子元件,编辑各元件并精确调整元件位置。对放置好的元件根据例图连接导线,绘制总线和总线出入端口,放置网络标号及电源和输入输出端口。最后放置注释文字。 五、实验步骤 (1)新建名为自己学号姓名的设计数据库 点击“NEW新建”新建数据库文件 在上图所示的选项栏里设置名为自己姓名学号的数据库文件 (2)建立名为自己姓名的原理图文件

点击上图所示图标建立名为自己姓名的原理图文件(3)进入原理图设计环境,修改文件名并修改图纸大小为A4 点击下图中“Options”选项设置图纸大小 (4)加载常用元件库 (5)从元件库中选出需用元件放在原理图设计工作面上 (6)利用绘图工具对所有元器件进行连线 最终原理图如图所示。 六、设计报告 1.明确实验目的和实验要求; 2.写出详细的实验内容和步骤; 3.写出实验中遇到的问题及改正的方法 七、注意事项 熟悉绘图工具的功能和用法是绘制好电路原理图的关键。

EDA实验指导书

实验一 MAX+PLUSII软件的使用 [实验目的] 掌握MAX+PLUSII软件的使用。 [实验内容] 学习MAX+PLUSII软件的设计操作步骤。 [实验原理] MAX+PLUSII软件介绍。 MAX+PLUSII软件功能简介: 1 原理图输入(Graphic Editor) MAX+PLUSII软件具有图形输入能力,用户可以方便的使用图形编辑器输入电路图,图中的元器件可以调用元件库中元器件,除调用库中的元件以外,还可以调用该软件中的符号功能形成的功能块。 2 硬件描述语言输入(Text Editor) MAX+PLUSII软件中有一个集成的文本编辑器,该编辑器支持VHDL,AHDL和Verilog硬件描述语言的输入,同时还有一个语言模板使输入程序语言更加方便,该软件可以对这些程序语言进行编译并形成可以下载配置数据。 3 波形编辑器(waveform Editor) 在进行逻辑电路的行为仿真时,需要在所设计电路的输入端加入一定的波形,波形编辑器可以生成和编辑仿真用的波形(*.SCF文件),使用该编辑器的工具条可以容易方便的生成波形和编辑波形。 4 编译与仿真 当设计文件被编译好,并在波形编辑器中将输入波形编辑完毕后,就可以进行行为仿真了,通过仿真可以检验设计的逻辑关系是否准确。 5 器件编程 当设计全部完成后,就可以将形成的目标文件下载到芯片中,实际验证设计的准确性。[实验步骤] 设计过程如下: 1)输入项目文件名(File/Project/Name) 2)输入源文件(图形、VHDL、AHDL、Verlog和波形输入方式) (Max+plusⅡ/graphic Editor, Max+plusⅡ/Text Editor, Max+plusⅡ/Waveform Editor) 3)指定CPLD型号(Assign/Device) 4)设置管脚、下载方式和逻辑综合的方式 (Assign/Global Project Device Option,Assign/Global Logic Synthesis) 5)保存并检查源文件(File/project/Save & Check) 6)指定管脚(Max+plusⅡ/Floorplan Editor) 7)保存和编译源文件(File/project/Save & Compile) 8)生成波形文件(Max+plusⅡ/Waveform Editor) 9)仿真(Max+plusⅡ/Simulator) 10)下载配置(Max+plusⅡ/Programmer) [实验报告要求] 不做要求。 实验二简单组合逻辑电路设计 [实验目的] 1 通过本实验提供的实例,掌握组合逻辑电路的设计方法。

09EDA实验指导书

EDA实验指导书

目录 实验一基于QUARTUSII图形输入电路的设计 (2) 实验二含异步清零和同步使能的加法计数器 (5) 实验三图形和VHDL混合输入的电路设计 (7) 实验四矩阵键盘接口电路的设计 (10) 实验五交通灯控制电路实验 (16) 附图EP1K10TC100管脚图 (24) 主芯片:ACEX 1K 系列的EP1K10TC100-3 下载电缆:Byte Blaster II

实验一基于QUARTUSII图形输入电路的设计 一、实验目的 1、通过一个简单的3线—8线译码器的设计,掌握组合逻辑电路的设计方法。 2、初步了解QUARTUSII原理图输入设计的全过程。 3、掌握组合逻辑电路的静态测试方法。 二、实验原理 3线-8线译码器三输入,八输出。当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。其真值表如表1-1所示 输入输出 D2 D1 D0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 表1-1 3线-8线译码器真值表 译码器不需要像编码器那样用一个输出端指示输出是否有效。但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使 能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表 示无任何信号。本例设计中没有考虑使能输入端,自己设计时可以考虑加入使 能输入端时,程序如何设计。 三、实验内容 在本实验中,用三个拨动开关来表示3线-8线译码器的三个输入(D2-D0);用

Verilog的135个经典设计实例

【例3.1】4位全加器 module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule 【例3.2】4位计数器 module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1; //计数 end endmodule 【例3.3】4位全加器的仿真程序 `timescale 1ns/1ns `include "adder4.v" module adder_tp; //测试模块的名字 reg[3:0] a,b; //测试输入信号定义为reg型 reg cin; wire[3:0] sum; //测试输出信号定义为wire型 wire cout; integer i,j; adder4 adder(sum,cout,a,b,cin); //调用测试对象 always #5 cin=~cin; //设定cin的取值 initial begin a=0;b=0;cin=0; for(i=1;i<16;i=i+1) #10 a=i; //设定a的取值 end - 1 -

initial begin for(j=1;j<16;j=j+1) #10 b=j; //设定b的取值 end initial//定义结果显示格式 begin $monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum); #160 $finish; end endmodule 【例3.4】4位计数器的仿真程序 `timescale 1ns/1ns `include "count4.v" module coun4_tp; reg clk,reset; //测试输入信号定义为reg型 wire[3:0] out; //测试输出信号定义为wire型 parameter DELY=100; count4 mycount(out,reset,clk); //调用测试对象 always #(DELY/2) clk = ~clk; //产生时钟波形 initial begin//激励信号定义 clk =0; reset=0; #DELY reset=1; #DELY reset=0; #(DELY*20) $finish; end //定义结果显示格式 initial $monitor($time,,,"clk=%d reset=%d out=%d", clk, reset,out); endmodule 【例3.5】“与-或-非”门电路 module AOI(A,B,C,D,F); //模块名为AOI(端口列表A,B,C,D,F) input A,B,C,D; //模块的输入端口为A,B,C,D output F; //模块的输出端口为F - 2 -

EDA实验指导书

ED心验指导书齐鲁理工学院

目录 实验一Protel DXP 2004认识实验 0 实验二两级阻容耦合三极管放大电路原理图设计 0 实验三原理图元件库建立与调用 (2) 实验四两级阻容耦合三极管放大电路PCB图设计............................ .4实验五集成电路的逻辑功能测试.. (6) 实验六组合逻辑电路分析与设计............................................... 1.1实验七Quartus II的使用 ................................................. 1.6实验八组合逻辑器件设计. (16) 实验九组合电路设计 (24)

实验一Protel DXP 2004 认识实验 一、实验目的 1. 掌握Protel DXP 2004的安装、启动和关闭。 2. 了解Protel DXP 2004主窗口的组成和各部分的作用。 3. 掌握Protel DXP 2004工程和文件的新建、保存、打开。 二、实验内容与步骤 1、Protel_DXP_2004 的安装 (1) 用虚拟光驱软件打开Protel_DXP_2004.iso 文件 (2) 运行setup\Setup.exe 文件,安装Protel DXP 2004 (3) 运行破解程序后,点击导入模版”,先导入一个ini文件模版(如果要生成单机版的License选择Unified Nexar-Protel License.ini;要生成网络版的License选择Unified Nexar-Protel Network License.ini ),然后修改里面的参数:TransactorName=Your Name (将"Your Name替换为你想要注册的用户名);SerialNumber=0000000 (如果你只有一台计算 机,那么这个可以不用修改,如果有两台以上的计算机且连成局域网,那么请保证每个License文件中的SerialNumber=为不同的值。修改完成后点击生成协议文件",任意输入一 个文件名(文件后缀为.alf)保存,程序会在相应目录中生成1个License文件。点击替换密钥”,选取DXP.exe (在DXP 2004安装目录里,默认路径为),程序会自动替换文件中的公开密钥。将前面生成的License文件拷贝至DXP 2004安装目录里(默认路径为)授权完成。 (4) 打开Protel 在左上角DXP 菜单下的Preference 菜单项里,选中Use localize resources后关闭Protel_DXP_2004 ,重新打开软件变为简体中文版本。 2、Protel_DXP_2004 的卸载 卸载Protel_DXP_2004的具体步骤如下: (1) 在Windows的“开始”菜单中选择“设置/控制面板”,然后在控制面板中选择“添加/删除程序”选项,将弹出对话框。从中选择DXP 2004应用软件。 (2) 单击删除”按钮,将弹出对话框,询问用户是否真的要删除程序。 (3) 单击“是”按钮,开始卸载。在卸载过程中,若想终止卸载,可单击“取消”按

EDA实验指导书new_Quartus2

EDA技术实验手册及程序代码 物理与信息项目学院 学号:111000228 姓名:汪艺彬 注意事项 1、本实验手册是为了配合《EDA技术实用教程》,作为本课程实验环节的补充 指导而编制。 2、实验中涉及的QuartusⅡ软件的使用请参考 《EDA技术实用教程》中有关章节。 手册中所有的虚线空白框,都留出来作为实验记录之用,每个实验完成后,应按照实验内容的要求将实验结果记入框中。 4、每个实验后面都附有一道思考题,完成实验内容后可以作为更进一步的练习 。 5、每次实验后将手册相关部分<完成实验结果记录)和实验源代码<.vhd文件) 一起,作为实验报告上交。 6、课程结束后请将所有报告按顺序加封面装订好上交,作为实验部分成绩计入 总成绩。 实验一利用原理图输入法设计4位全加器一、实验目的: 熟悉如何在QuartusⅡ集成环境下利用原理图输入设计简单组合逻辑电路,掌握层次化的电路设计方法。 二、实验原理: 一个4位全加器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的进位输入信号cin相接。 三、实验内容: 1.QuartusII软件的熟悉

熟悉QuartusⅡ环境下原理图的设计方法和流程,可参考课本5.4节的内容,重点掌握层次化的设计方法。 2.设计1位全加器原理图 设计的原理图如下所示 3.利用层次化原理图方法设计4位全加器 <1)生成新的空白原理图,作为4位全加器设计输入 <2)利用已经生成的1位全加器作为电路单元,设计4位全加器的原理图,如下所示 4、设计一个超前进位4位全加器 以上设计的全加器是基于串行进位的结构,高位的进位输入必须等待低位的运算结果,造成较长的延时。通过对进位位进行超前运算,可以缩短这部分的延时。 在已有1位全加器的基础上设计一个具有超前进位结构的4位全加器,原理图如下所示 5、完成设计流程

EDA实验箱实验指导书

实验二流水灯 1.实验目的 通过本实验让学生进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及VHDL 语言的编程方法;学习简单的时序电路的设计和硬件测试。 2.实验内容 本实验的内容是控制实验箱上的发光二极管LED1—LED8,使之实现流水灯显示。3.实验原理 在LED1~LED8引脚上周期性地输出流水数据,即输出的数据依次为11111111、11111110、11111100、11111000、11110000、11100000、11000000、10000000、00000000,如此循环显示,输出数据“0”,表示点亮相应的LED小灯。为了方便观察,流水的速率控制在2Hz左右。在核心板上有一个48MHz的标准时钟源,该时钟源与芯片EP2C5的23脚相连。为了产生2Hz的时钟源,在此调用了分频模块int_div。 4.实验步骤 (1)启动Quartus II,建立一个空白工程,然后命名为led_waterflow.qpf。 (2)新建ledwater.vhd源程序文件,源代码如下。然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。生产符号文件ledwater.bsf (File→ Create/_Update → Create Symbol Files for Current File)。 流水灯程序参考 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_Arith.ALL; USE IEEE.STD_LOGIC_Unsigned.ALL; ENTITY ledwater IS PORT( clk: IN STD_LOGIC; led: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END; ARCHITECTURE one OF ledwater IS SIGNAL led_r:STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN led<=led_r(7 DOWNTO 0); PROCESS(clk) BEGIN IF clk’event and clk=’1’ THEN led_r<=led_r(7 DOWNTO 0) & '0'; IF led_r="000000000" THEN --循环完毕吗? led_r<="111111111"; --是,则重新赋初值 END IF; END IF; END PROCESS; END; (3)将实验模块库里的int_div.vhd和int_div.bsf拷贝到工程目录下。

Verilog程序例子

modul e and1(a, b, c); input a; input b; output c; assign c = a & b; endmodul e `timescale 1ns/1ns modul e t; reg a; reg b; wire c; and1 t(a,b,c); initial begin a=0; b=0; #100 a = 1; b = 0; #100 a = 0; b = 1; #100 a = 0; b = 0; #100 a = 1; b = 1; #100 $stop;

end initial $monitor("a = %d, ", a, " b = %d, ", b, "c = %d\n", c); endmodul e modul e add(a, b, in, c, out); input a; input b; input in; output c; output out; assign {out, c} = a + b + in; endmodul e `timescal e 1ns/1ns modul e count_t; reg clk; reg a; reg b; reg in; wire c; wire out; ad d process(a, b, in, c, out);

initial clk = 0; always forever #5 clk = ~clk; initial begin a = 0; b = 0; in = 0; #10 a = 0; b = 0; in = 1; #10 a = 0; b = 1; in = 0; #10 a = 0; b = 1; in = 1; #10 a = 1; b = 0; in = 0; #10 a = 1; b = 0; in = 1; #10 a = 1; b = 1; in = 0; #10 a = 1; b = 1; in = 1; end initial begin #200 $finish; end initial $monitor(" out = %d, c = %d\n", out, c); endmodul e modul e compare (equal, a, b); input a,b; output equal; assign equal= (a==b)?1:0; endmodul e `timescal e 1ns/1ns modul e t; reg a, b; wire equal; initial begin a=0; b=0; #100 a = 1; b = 0;

EDA实验指导书1

EDA实验指导书 天津大学仁爱学院 2011年9月30日

目录 1.实验一LED实验 (验证性实验) 2.实验二LED点阵实验 (综合性实验) 3.实验三LCD显示实验 (设计性实验)

实验一:LED实验 一、实验目的 1.熟悉ISE8.2开发环境,掌握工程的生成方法; 2.熟悉SEED-XDTK_V4实验环境; 二、实验内容 1.创建工程; 2.添加HDL资源文件; 3.配置一个应用程序完成设计。 三、实验准备 1.通过USB口下载电缆将计算机的USB口及SEED-FEM025板的J9连接好; 2.启动计算机,打开SEED-XDTK_V4实验箱电源开关。观察SEED-FEM025板上的+ 5V(D11)的电源指示灯是否均亮。若有不亮的,请断开电源,检查电源。 四、实验步骤 1.创建工程 1)双击桌面Xilinx ISE8.2快捷方式打开ISE工程管理器(Project Navigator); 2)打开Project Navigator后,选择File→New Project,弹出新建工程对话框; 3)在工程路径中单击“…”按钮,将工程指定到如下目录D:\02.V4_lab,单击确定; 4)在工程名称中输入led,点击Next按钮,如图1.1所示; 图1.1 5)弹出器件特性对话框。器件族类型(Device Family)选择“Virtex4”,器件型号(Device) 选“XC4VSX25FF668-10”,综合工具(Synthesis Tool)选“XST(VHDL/Verilog)”,仿真器(Simulator)选“ISE Simulator”,如图1.2;

EDA实验指导书全(Verilog版)

EDA实验指导书 熊利祥编 武汉理工大学华夏学院

2011年9月

前言 一、实验课目的 EDA实验课是电子工程类专业教学中重要的实践环节,包括了ISE开发环境基本操作及Verilog语言、组合逻辑电路设计、流水灯设计、计数器设计、扫描显示电路的驱动、综合层次性实验——交通灯或数字秒表设计实验。要求学生通过实验学会正确使用EDA技术,掌握FPGA器件的开发,熟练使用ISE开发环境,掌握Verilog 语言的编程,掌握数字电路和系统的设计。 通过实验,使学生加深对课堂专业教学内容的理解,培养学生理论联系实际的能力,实事求是,严谨的科学作风,使学生通过实验结果,利用所学的理论去分析研究EDA技术。培养学生使用EDA实验设备的能力以及运用实验方法解决实际问题的能力。 二、实验要求: 1.课前预习 ①认真阅读实验指导书,了解实验内容; ②认真阅读有关实验的理论知识; ③读懂程序代码。 2.实验过程 ①按时到达实验室; ②认真听取老师对实验内容及实验要求的讲解; ③认真进行实验的每一步,观察程序代码与仿真结果是否相符; ④将实验过程中程序代码和仿真结果提交给老师审查; ⑤做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。 3.实验报告 ①按要求认真填写实验报告书; ②认真分析实验结果; ③按时将实验报告交给老师批阅。

三、实验学生守则 1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西; 2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件; 3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线; 4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。

EDA实验指导书_新2014(新)印刷

淮阴工学院EDA技术实验指导书 编者:叶小婷 电子与电气工程学院 2014年6月7日

目录 实验一基于QUARTUSII 图形输入电路的设计 (1) 实验二基于VHDL 格雷码编码器的设计 (16) 实验三含异步清零和同步使能的加法计数器 (18) 实验四八位七段数码管动态显示电路的设计 (20) 实验五数控分频器的设计 (22) 实验六图形和VHDL 混合输入的电路设计 (23) 实验七四位并行乘法器的设计 (26) 实验八基本触发器的设计 (28) 实验九四位全加器设计 (30) 实验十矩阵键盘显示电路的设计 (32) 实验十一用VHDL 设计七人表决器 (35) 实验十二用VHDL 设计四人抢答器 (37) 实验九熟悉PROTEL99环境 (39) 实验十原理图设计 (42) 实验十一元件制作与网络表操作 (44) 实验十二印刷电路板设计 (47) 附录一实验箱常用管脚分配表 (49) 附录二参考程序 (51)

实验一基于QUARTUSII 图形输入电路的设计 一、实验目的 1.通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。 2.初步了解QUARTUSII 原理图输入设计的全过程。 3.掌握组合逻辑电路的静态测试方法。 二、实验设备 1.PC机一台; 2.Altera Blaster下载器一根; 3.THGSC-3型实验箱一台。 三、实验原理 3-8译码器三输入,八输出。当输入信号按二进制方式的表示值为N时,输出端标号为N 的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。 译码器不需要像编码器那样用一个输出端指示输出是否有效。但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。 四、实验容 在本实验中,用三个拨动开关(SW1~SW3)来表示三八译码器的三个输入(A、B、C);用八个LED 来表示三八译码器的八个输出(D1~D8)。通过输入不同的值来观察输入的结果与三八译码器的真值表是否一致。实验箱中的拨动开关,当开关闭合(拨动开关的档位在下方)时其输出为低电平,反之输出高电平。实验箱中的拨动开关与FPGA 的接口电路,LED 灯与FPGA 的接口电路以及拨动开关、LED 与FPGA 的管脚连接在用户手册中都做了详细说明,这里不再赘述。 五、实验步骤 下面将通过这个实验,向读者介绍QUARTUSII 的项目文件的生成、编译、管脚分配以及时序仿真等的操作过程。 1.建立工程文件 1)选择“开始>程序>Altera>QuartusII 9.0”,运行QUARTUSII 软件。或者双击桌面上的QUARTUSII 的图标运行QUARTUSII 软件,出现如图1-1 所示,如果是第一次打开QUARTUSII 软件可能会有其它的提示信息,使用者可以根据实际情况进行设定后进入图1-1 所示界面。 2)选择软件中的,新建一个工程。如图1-2所示。 3)点击图1-2 中的Next 进入工作目录,工程名的设定对话框如图1-3 所示。第一个输入框为工程目录输入框,用户可以输入如e:/eda 等工作路径来设定工程的目录,设定好后,所有的生成文件将放入这个工作目录。第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。用户可以设定如exp1,一般情况下工程名称与实体名称相同。使用者也可以根据自已的实际情况来设定。

Verilog的150个经典设计实例

module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule 【例3.2】4位计数器 module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1; //计数 end endmodule 【例3.3】4位全加器的仿真程序 `timescale 1ns/1ns `include "adder4.v" module adder_tp; //测试模块的名字 reg[3:0] a,b; //测试输入信号定义为reg型 reg cin; wire[3:0] sum; //测试输出信号定义为wire型 wire cout; integer i,j; adder4 adder(sum,cout,a,b,cin); //调用测试对象 always #5 cin=~cin; //设定cin的取值 initial begin a=0;b=0;cin=0; for(i=1;i<16;i=i+1) #10 a=i; //设定a的取值 end - 1 -

initial begin for(j=1;j<16;j=j+1) #10 b=j; //设定b的取值 end initial//定义结果显示格式 begin $monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum); #160 $finish; end endmodule 【例3.4】4位计数器的仿真程序 `timescale 1ns/1ns `include "count4.v" module coun4_tp; reg clk,reset; //测试输入信号定义为reg型 wire[3:0] out; //测试输出信号定义为wire型 parameter DELY=100; count4 mycount(out,reset,clk); //调用测试对象 always #(DELY/2) clk = ~clk; //产生时钟波形 initial begin//激励信号定义 clk =0; reset=0; #DELY reset=1; #DELY reset=0; #(DELY*20) $finish; end //定义结果显示格式 initial $monitor($time,,,"clk=%d reset=%d out=%d", clk, reset,out); endmodule 【例3.5】“与-或-非”门电路 module AOI(A,B,C,D,F); //模块名为AOI(端口列表A,B,C,D,F) input A,B,C,D; //模块的输入端口为A,B,C,D output F; //模块的输出端口为F - 2 -

FPGA设计实验指导书(2013)

《FPGA设计》实验指导书

安全操作注意事项 1、接插下载电缆前,请务必关闭实验箱开关,避免损坏下载电缆或实验箱器件。 2、操作过程中应防止静电。 3、保持实验箱和电路板的表面清洁。 4、小心轻放,避免不必要的硬件损伤或者人身受伤。 实验箱简介

实验一简单组合逻辑设计 一、实验目的和任务 1、熟习Quartus II软件的使用; 2、掌握用原理图输入法和硬件描述语言(Verilog HDL)两种方法来设计逻 辑电路; 3、通过电路的仿真及验证,进一步了解4选1数据选择器的功能; 二、实验内容 1、用原理图输入法来设计4选1数据选择器 参照按图1-1所示来编辑完成4选1数据选择器的原理图输入,其中a、b、c、d 为数据输入端,sel[1]、sel[0]为控制输入端,q为4选1数据输出端。存盘仿真后,观察仿真波形,以验证数据选择器的功能。 图1-1 4选1数据选择器原理图 2、用Verilog HDL硬件描述语言来设计4选1数据选择器 用QuartusII中的文本编辑器,编辑输入4选1数据选择器源程序:module m41( a, b, c, d, sel, q); input a,b,c,d; input [1:0]sel; output q; reg q; always @( sel) case(sel) 2’b00: q=a; 2’b01: q=b;

2’b11: q=d; endcase endmodule 程序中的a 、b 、c 、d 依然为数据输入端,sel[1]、sel[0]为控制输入端,q 为4选1数据输出端。同样存盘后进行仿真,并观察仿真波形,以验证数据选择器的功能。 三、实验仪器、设备及材料 电脑、EDA 软件、实验箱、下载电缆。 四、实验原理 4选1数据选择器的原理框图及真值表如图1-2及表1-1所示,sel[1:0]可能出现四种组合情况: 00 01 10 11,它分别对应选通四个不同的数据输入a 、b 、c 、d ,从q 端输出。结合以前所学数字电路的知识,可由真值表得出利用“与非门”实现的逻辑电路,进而可用QuartusII 原理图输入方法,设计出该4选1数据选择器;如应用EDA 技术所学的Verilog HDL 硬件描述语言来描述该电路功能,即可设计出该4选1数据选择器的源程序。 图1-2 4选1数据选择器的原理框图 q Sel[1]输出 选择输入 0a 01b 00 c 11 d 1 Sel[0]表1-1 真值表 五、重点、难点 d a b c

verilog实例代码2word版本

v e r i l o g实例代码2

//与门 module zxhand2(c,a,b); input a,b; output c; assign c= a & b; endmodule //或门 module zxhor2(c,a,b); input a,b; output c; assign c= a | b; endmodule //非门 module zxhnot2(c,b); input b; output c; assign c=~ b; endmodule ////异或门 module zxhxro2(c,a,b); input b; output c; assign c=a ^ b; endmodule 两选一电路 module data_scan(d0,d1,sel,q); output q; input d0,d1,sel; wire t1,t2,t3; n1 zxhand2(t1,d0,sel); n2 zxhnot2 (t4,sel); n3 zxhand2(t2,d1,t4); n4 zxhor2(t3,t1,t2); assign q=t1;

endmodule verilog HDL实例(一) 练习一.简单的组合逻辑设计 目的: 掌握基本组合逻辑电路的实现方法。 这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时, //equal输出为0。 endmodule 测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。 测试模块源代码: `timescale 1ns/1ns //定义时间单位。 module comparetest; reg a,b; wire equal; initial //initial常用于仿真时信号的给出。 begin a=0; b=0; #100 a=0; b=1; #100 a=1; b=1; #100 a=1; b=0; #100 $stop; //系统任务,暂停仿真以便观察仿真波形。 end compare compare1(.equal(equal),.a(a),.b(b)); //调用模块。 Endmodule

EDA技术与VHDL实验指导书

EDA技术与HDL 实验指导书 吉林大学珠海学院 二零一一年制定

目录 实验一:实验环境和平台的建立 (1) 实验二:组合逻辑电路设计 (12) 实验三:多层次设计 (14) 实验四:时序逻辑电路设计(一) (18) 实验五:时序逻辑电路设计(二) (20) 实验六:分频器的设计 (22) 实验七:通用移位寄存器的设计 (23) 实验八:数码管扫描显示的设计 (24) 实验九:正弦信号发生器的设计 (26) 实验十:序列检测器的设计 (36)

实验一:实验环境和平台的建立 一、实验目的: 熟悉Quartus II的VHDL文本设计流程,学习8-3编码器的设计、仿真。二、实验内容: 用VHDL编写8-3编码器的VHDL代码并仿真。 三、实验环境 PC 机(Pentium100 以上)、Altera Quartus II 6.0 CPLD/FPGA 集成开环境。 四、实验原理 在数字系统中,常常需要将某一信息(输入)变换为某一特定的代码(输出)。把二进制码按一定的规律排列,例如8421码、格雷码等,使每组代码具有一特定的含义(代表某个数字或是控制信号)称为编码。具有编码功能的逻辑电路称为编码器。编码器有若干个输入,在某一时刻只有一个输入被转换为二进制码。例如8线-3线编码器和10线-4线编码器分别有8输入、3位输出和10位输入、4位输出。8线-3线编码器的真值表见表1-1,管脚图如图1-1所示。 输入输出 A7 A6 A5 A4 A3 A2 A1 A0 Y2 Y1 Y0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 表1-1 8-3编码器真值表 图1-1 8-3编码器管脚图 五、实验步骤

相关文档