硬件描述语言与FPGA技术实验指导书(2012版)
- 格式:doc
- 大小:632.50 KB
- 文档页数:51
FPGA实验指导书——DE2开发板使用实验昆明理工大学实验一 DE2的顶层默认程序这个实验为用户提供连接分配和顶层Verilog模块,这个模块也是这本手册所有其他实验的基础性模块。
这个实验产生的编程文件是DE2开发板在出货时作为默认载入开发板的编程文件。
本实验将介绍如何编译工程并把生成的编程文件下载到DE2开发板中。
启动开发板(1)将USB线和电源连接到DE2板上。
(2)按下电源开关,这时电源指示灯会被点亮。
(3)你将看到以下现象:●所有的LED灯都闪烁。
●所有七段数码管从0到F循环显示。
●液晶屏显示“Welcome to the Altera DE2 Board”。
●在VGA显示器上显示欢迎信息。
●将开关SW17置OFF,从LINEOUT插座输出1khz正弦波的声音;将开关SW17置ON并将一个MP3播放器的输出接到DE2板的LINE—IN端口,可从耳机里听到MP3播放的音乐。
●若将麦克风接到DE2板的MIC端口上,这样用户的声音可与MP3播放器混合。
Cyclone II中的顶层verilog模块这部分将介绍一个Quartus II工程中所需要的所有组件。
它将让你了解如何使用Quartus II将代码转换成数据流下载的整个设计流程。
按照以下步骤进行:(1)打开Quartus II 软件。
(2)点击File→Open Project ,如图1.1。
(3)在D:\DE2_System_v1.5\DE2_demonstrations\DE2_Default目录下选中DE2_Default.qpf工程文件打开。
(4)在“Project Navigator”工程导航区可查看该工程的层次、包含的所有文件、设计单元等信息。
其中“File”下列出了整个工程包含的所有文件。
双击顶层设计文件DE2_Default.v,可以看到文件的内容和I/O口的声明。
在对每个引脚声明时加上了详细的注释,以便用户更好的明白每个引脚的功能。
实验一组合逻辑3-8译码器的设计 .................... 错误!未定义书签。
实验二基于FPGA的数字钟的设计 ................... 错误!未定义书签。
实验三基于NIOS的交通灯实验 .......................... 错误!未定义书签。
实验四静态图像显示 ............................................. 错误!未定义书签。
实验一组合逻辑3-8译码器的设计一、实验目的:1、通过3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
3、初步了解可编程器件设计的全过程。
二、实验步骤:1、打开QuartusII软件。
2、选择路径。
选择File/New Project Wizard,指定工作目录,指定工程和顶层设计实体称;注意:工作目录名不能有中文。
3、添加设计文件。
将设计文件加入工程中。
单击“Next”,如果有已经建立好的VHDL 或者原理图等文件可以在File name中选择路径然后添加,或者选择Add All添加所有可以添加的设计文件(.VHDL ,.Verilog原理图等)。
如果没有直接点击“Next”,等建立好工程后再添加也可,这里我们暂不添加。
4、选择FPGA器件。
Family选择Cyclone II,Available device选EP2C35F484C8,Packge选择Any,Pin Count 选择484,Speed grade选择Any;点击“Next”。
5、选择外部综合器、仿真器和时序分析器。
Quartus II支持外部工具,可通过选中来指定工具的路径。
这里我们不做选择,默认使用Quartus II自带的工具。
6、结束设置。
单击“Next”,弹出“工程设置统计”窗口,上面列出了工程的相关设置情况。
最后单击“Finish”,结束工程设置。
7、建立原理图文件。
集成电路设计硬件描述语言实验指导书实验一Verilog HDL程序结构与ModelSim、Quartus II软件的使用一、实验目的初步掌握Verilog HDL程序基本结构,编制简单的Verilog程序,掌握ModelSim、Quartus II软件的使用,掌握用Quartus II软件对Verilog程序进行编译仿真下载的基本方法。
二、实验内容1、编写Verilog程序描述一个电路,实现以下功能:该电路具有一个输入端口a,一个输出端口b,电路的作用是把输入到a的信号传送给b。
2、编写Verilog程序描述一个电路,实现以下功能:该电路具有两个输入端口a,b一个输出端口c,电路的作用是:c的输出是a 和b的“与”。
三、实验步骤1、编写Verilog程序,两个文件名分别为ex1.v和ex2.v,使用ModelSim的force命令进行仿真。
2、编写测试平台(testbench),对程序进行仿真。
3、启动Quartus II软件,建立工程(第一个工程名为ex1,顶层文件名为ex1.v;第二个工程名为ex2,顶层文件名为ex2.v)。
器件选择Cyclone系列中的EP1C3T144C8。
4、编写Verilog程序,存盘编译。
5、通过编译后,建立波形文件,设置仿真输入信号,存盘。
6、进行仿真,分析结果。
7、进行引脚锁定,重新编译。
对于ex1:a 对应引脚号1(PIO0)b 对应引脚号11(PIO8)对于ex2:a 对应引脚号1(PIO0)b 对应引脚号2(PIO1)c 对应引脚号11(PIO8)8、下载到EDA实验系统上的FPGA中,进行实际测试。
选用实验电路结构图NO.5。
四、实验报告要求实验目的,实验内容,设计的Verilog程序,实验结果,结果分析,心得与体会。
实验二异步清零十进制计数器的设计一、实验目的熟悉时序逻辑电路Verilog程序的设计,掌握计数器的设计方法。
二、实验内容编写Verilog程序描述一个电路,实现以下功能:具有2个输入端口clk和clr,clk输入时钟信号,clr起异步清零作用,‘1’有效,两个输出端口,c和q,q的位宽为4,输出计数值,从0到9,c的位宽为1,每当q为9时输出一个高电平脉冲。
《FPGA设计与应用》实验指导书熊利祥编武汉理工大学华夏学院2011年9月前言一、实验课目的数字电路与系统设计实验课是电子工程类专业教学中重要的实践环节,包括了ISE开发环境基本操作及FPGA的基本原理、基带传输系统的设计、Uart串口控制器电路的设计、PS/2接口的设计、VGA显示接口设计。
要求学生通过实验学会正确使用EDA技术,掌握FPGA器件的开发,熟练使用ISE开发环境,掌握Verilog语言的编程,掌握数字电路和系统的设计。
通过实验,使学生加深对课堂专业教学内容的理解,培养学生理论联系实际的能力,实事求是,严谨的科学作风,使学生通过实验结果,利用所学的理论去分析研究EDA技术。
培养学生使用Basys 2开发板的能力以及运用实验方法解决实际问题的能力。
二、实验要求:1.课前预习①认真阅读实验指导书,了解实验内容;②认真阅读有关实验的理论知识;③读懂程序代码。
2.实验过程①按时到达实验室;②认真听取老师对实验内容及实验要求的讲解;③认真进行实验的每一步,观察程序代码与仿真结果是否相符;④将实验过程中程序代码和仿真结果提交给老师审查;⑤做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。
3.实验报告①按要求认真填写实验报告书;②认真分析实验结果;③按时将实验报告交给老师批阅。
三、实验学生守则1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西;2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件;3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线;4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。
目录实验一Uart通用串口接口的设计 (4)实验二PS/2接口的设计 (28)实验三VGA显示接口设计 (30)附录一 basys 2开发板资料 (36)实验一 Uart串口控制接口电路的设计一、实验目的1.掌握分频模块的设计方法。
可编程逻辑器件(FPGA)实验指导书北京航空航天大学电工电子中心2014-10-22目录一、可编程逻辑器件概述 (1)1.1可编程逻辑器件发展及应用意义 (1)1.2可编程逻辑器件FPGA/CPLD结构简介 (1)二、可编程逻辑器件应用实质和编程原则 (6)2.1选择可编程逻辑器件的实质(或目的或目标) (6)2.2可编程逻辑器件设计流程 (6)2.3硬件描述语言分类 (8)三、VHDL程序设计基本结构 (9)3.1实体(ENTITY) (9)3.2结构体(ARCHITECTURE) (11)3.3子程序(FUNCTION PROCEDURE) (12)3.4集合包(PACKAGE) (13)3.5库(LIBRARY) (14)3.6配置(CONGIFURATION) (15)四、VHDL语法和语句简介 (16)4.1数据类型 (16)1、标准数据类型 (16)2、标准逻辑类型 (16)3、用户自定义数据类型 (16)4.2VHDL语言运算符 (17)1、基本运算符 (17)2、关系运算符 (17)3、算术运算符 (17)4、其他运算符 (18)4.3赋值语句 (18)4.4 IF语句 (19)4.5 CASE语句 (20)4.6进程(PROCESS)语句 (21)4.7并行过程调用语句CONCURRENT PROCEDURE CALLS STATEMENT (23)1、并行信号赋值语句 (23)2、条件信号赋值语句 (23)3、选择信号赋值语句 (24)4.8元件例化语句 COMPONENT I NSTANTIATIONS (24)4.9 LOOP语句 (26)4.10跳出循环语句(NEXT、EXIT语句) (27)4.11 RETURN语句 (27)4.12 NULL语句 (28)五、状态机 (29)5.1、状态机类型定义语句 (29)5.2时序电路时钟的表述方法 (31)六、实验篇 (33)6.1、门电路系列实验(任选一个实验) (36)6.2、组合逻辑系列实验(任选一个实验) (36)6.3、触发器系列实验(任选一个实验,规则自已分析确定) (36)6.4、时序逻辑系列实验(任选一个实验,规则自已分析确定) (36)6.5、存储器设计系列实验(任选一个实验,规则自已分析确定) (37)6.6、状态机逻辑系列实验(任选一个实验) (37)6.7、综合系统逻辑系列实验(任选一个实验,规则自已分析确定) (37)七、FPGA实验平台简介 (38)7.1、A LTERA FPGA EP1C6Q240特性 (38)1、Cyclone系列器件特性 (38)2、Cyclone系列器件可选封装和I/O引脚数 (39)3、Cyclone 系列器件I/O Banks布局图 (39)4、Cyclone device IOEs 支持标准接口 (39)5、Cyclone FPGA EP1C6Q240器件特点 (40)6、Cyclone EP1C6(12)Q模块分布图 (40)7、Cyclone EP1C6Q资源分配 (40)8、Cyclone EP1C6240C8引脚布局图 (41)7.2、实验平台硬件接口电路功能 (45)1、电源单元 (46)2、输入单元 (46)3、输出单元 (46)4、接口单元 (47)5、扩展单元 (47)7.3、输入有源信号 (47)1、电源 (47)2、逻辑电平输入信号——8bit DIP 开关×3 (47)3、单脉冲输入信号 (48)4、连续脉冲输入信号 (49)5、4X4键盘输入信号 (50)7.4、显示方式(供输出信号选择不同显示效果) (51)1、LED显示方式 (51)2、七段数码管显示方式 (52)3、米字型数码管显示方式 (53)4、8X8点阵显示方式 (54)5、LCD显示方式 (55)7.5、实验平台FPGA EP1C6Q240C8引脚与负载区各接口电路之间对应关系 (56)7.6、集成开发环境使用 (57)1、文本编辑源程序文件步骤 (58)2、原理图和图表模块编辑步骤 (83)3、混合编辑(自底向上)步骤 (103)4、混合编辑(自顶向下)步骤 (103)一、可编程逻辑器件概述1.1可编程逻辑器件发展及应用意义可编程逻辑器件发展--从PROM(Programmable Read Only Memory)、PLA(Programmable Logic Array)、PAL(Programmable Array Logic)、可重复编程的GAL(Generic Array Logic)、到采用大规模集成电路技术的EPLD(Erasable Programmable Logic Device),直到CPLD(Complex Programmable Logic Device)和FPGA(Field Programmable Gate Array)。
计算机组成原理FPGA实验指导书《计算机组成原理》实验指导书计算机科学与技术学院⽬录实验⼀熟悉实验平台 (3)实验⼆总线传送 (10)实验三运算器的设计与调试 (14)实验四存贮器的设计与调试 (20)实验五控制器的设计与调试 (26)附录常⽤器件简介 (30)实验⼀熟悉实验平台⼀.实验⽬的1.熟悉使⽤Verilog硬件描述语⾔2.熟悉ISE开发环境3.掌握实验箱组成4.熟悉时序发⽣器的组成原理;5.掌握数字逻辑器件Verilog语⾔的编写;⼆.实验设备1.装有ISE10.1的PC机⼀台2.EDK-3SAISE实验箱⼀台三.实验内容1.节拍信号T1—T4波形如图-1所⽰图-1 节拍时序波形图每个节拍内均包含脉冲clk_m1。
节拍信号有三种⼯作⽅式。
这三种⼯作⽅式时标信号的启动,停⽌受Button,Rstn按钮开关控制。
2.⽤Verilog语⾔实现时序代码如下:module Timeen(input Clk, //System Clock 40Mhzinput Button, // setep clockinput Rstn, // reset, low activeinput Clk_sel, // sequence timing or step timing select input Clk_sel1, output [4:1] t, // Display(T1-T4)output M1);wire Clk_m1;wire Clk_i,Clk_ii;wire PB_R;assign M1=Clk_m1;GenClk_i Clk_i_Module (.Clk_s(Clk),.Clk_i(Clk_i),.Rstn(Rstn));GenClk_ii Clk_ii_Module (.PB_R(PB_R),.Clk(Clk),.Clk_ii(Clk_ii));Debouncer Debouner_Module (.Clk_s(Clk),.PB(Button),.PB_state(),.PB_up(PB_R),.PB_down());ClkSel ClkSel_Module (.Clk_s(Clk),.Clk_i(Clk_i),.Clk_ii(Clk_ii),.Clk_m1(Clk_m1),.Clk_sel(Clk_sel),.Clk_sel1(Clk_sel1));Bit1_Display Bit1_Display_Module (.Clk_s(Clk),.Clk_m1(Clk_m1),.T(t),.Rstn(Rstn),.Clk_i(Clk_i));endmodulemodule GenClk_i(input Clk_s,output Clk_i,input Rstn);reg [24:0] Cnt;assign Clk_i= Cnt[24];always@(posedge Clk_s or negedge Rstn) beginif (!Rstn)Cnt<=0;elseCnt <= Cnt + 1;endendmodulemodule GenClk_ii(input PB_R,input Clk,output Clk_ii);reg Clk_o,Clk_o1,Clk_o2;assign Clk_ii=Clk_o2;always@(posedge Clk )beginClk_o<=PB_R;Clk_o1<=Clk_o;Clk_o2<=Clk_o1;endendmodulemodule Debouncer(Clk_s, PB, PB_state, PB_up, PB_down);input Clk_s; // "clk" 时钟信号input PB; // "PB" 有⽑刺的、异步的、低有效的按键信号output PB_state; // 当按键被按下时输出1output PB_down; // 按键被按下的瞬间输出⼀个⾼电平脉冲output PB_up; // 按键被松开的瞬间输出⼀个⾼电平脉冲// ⾸先使⽤两个触发器来同步PB信号reg PB_sync_0;always @(posedge Clk_s)PB_sync_0 <= ~PB; // 翻转PB,使之⾼有效reg PB_sync_1;always @(posedge Clk_s) PB_sync_1 <= PB_sync_0;// 声明⼀个16位的剖?reg [21:0] PB_cnt;// 当按键被按下或松开时,计数?// 当计数器计数溢出时,便认为按键的状态确定。
实验一用硬件描述语言的方法设计一个4位加法器一、实验目的1、掌握4位加法器的功能和设计方法;2、掌握用硬件描述语言的方法设计组合逻辑电路——4位加法器。
二、实验器材1、台式计算机 1台2、可编程逻辑逻辑器件实验软件1套3、下载电缆一套4、示波器一台三、实验说明1、台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。
2、可编程逻辑逻辑器件实验软件向硬件描述语言的编写提供平台,并将调试好的程序下载到可编程逻辑逻辑器件中。
3、下载电缆是可编程逻辑器件软件和可编程逻辑逻辑器件之间的接口电缆,为了便于区别,用不同颜色导线区分下载电缆的电源、地和信号,一般用红色导线接电源,用黑色导线接地。
4、示波器用于观察可编程逻辑逻辑器件执行程序时输出信号的变化四、实验内容和步骤1、设计一个4 位的全加器,其框图如图4-1所示。
图中的“进位入”Ci-1指的是低位的进位输出,“进位出”Ci即是本位的进位输出。
(被加数)Bi(3..0)(被加数)Ai(3..0) (进位入)C i-1(全加和)Si(3..0)(进位出)Ci图1-1 4位全加器原理图2、全加器的9个输入所对应的管脚同9位拨码开关相连,9个输入管脚是a0~a3、b0~b3和C i-1,a0~a3、b0~b3代表两个4位二进制数,cin代表进位位;5个输出所对应的管脚同5位发光二极管相连,5个输出管脚是si0~si3和ci,si0~si3代表相加结果,Ci代表进位位。
3、将设计好的逻辑功能转为硬件描述语言的描写4、将设计好的硬件描述语言进行仿真5、将仿真好的硬件描述语言下载到可编程逻辑逻辑器件中五、实验报告要求1、整理实验结果,填写实验报告。
2、小结实验心得体会。
3、回答思考题什么叫全加器,它的作用是什么? 4位加法器和全加器的区别和联系是什么?实验二用硬件描述语言的方法设计一个分频器一、实验目的1、掌握各种分频器的设计思路2、掌握用硬件描述语言的方法设计各种分频器二、实验器材1、台式计算机 1台2、可编程逻辑逻辑器件实验软件1套3、下载电缆一套4、示波器一台三、实验说明1、台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。
实验一逻辑门电路实验一、实验目的1、学习并掌握CPLD/FPGA实验开发系统的基本操作2、学习在ispLEVER3.0下设计简单逻辑电路与功能仿真的方法二、实验说明本实验所演示的是个3与非门。
三、实验内容及实验步骤本实验需要用到单片机最小应用系统(F1区)和LATTICE LC4128实验板。
1、把LATTICE LC4128实验板插入单片机最小应用系统的四个座子中。
2、25针的并口线一端连PC机的并口,另一端与下载连接线的25针的并口相连,下载连接线的另一端8P的插座插入LATTICE LC4128实验板的8P排线座JTAG中,用两根二号导线把LATTICE LC4128实验板的+5V和GND对应的接至实验装置上的电源,JP1、JP2两个短路帽插到左边。
3、在ispLEVER3.0软件中打开CPLD程序里的第一个实验项目“yufei3.syn”,将编译后的文件下载到实验板上进行验证。
(ispLEVER3.0软件使用见附录五)4、本实验所演示的是个3与非门,LATTICE LC4128实验板上的K1、K2、K3分别为3与非门的输入端a、b、c,发光二极管D1为输出端。
只有当K1、K2、K3都为1时,D1亮。
(发光二极管低电平亮)四、实验程序(见光盘中的程序文件夹)五、实验报告1、总结用ispLEVER3.0软件开发系统对逻辑电路进行设计、仿真的操作步骤。
2、讨论用CPLD/FPGA 开发系统进行逻辑电路设计的特点与优越性。
实验二数据选择器实验一、实验目的1、掌握CPLD/FPGA实验开发系统的操作技巧2、掌握用ISPLEVER3.0进行一般数字逻辑电路的设计方法3、学习CPLD/FPGA芯片下载与实验基本方法二、实验说明通过电平开关设置待选择的数据,由发光二极管显示。
三、实验内容及步骤本实验需要用到单片机最小应用系统(F1区)和LATTICE LC4128实验板。
1、把LATTICE LC4128实验板插入单片机最小应用系统的四个座子中。
前言FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
FPGA 的基本特点主要有:1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等,本实验箱选用了ALTERA公司Cyclone系列芯片 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM 编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
《硬件描述语言与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,这是一种在组合逻辑实现分支判断时常使用的格式。
《信号与信息处理综合实验(FPGA部分)》实验指导书实验一FPGA使用入门一、实验目的(1)掌握ISE 13.2集成开发环境和Modelsim软件的使用方法;(2)熟悉S6 Card实验板的使用方法。
(3)掌握使用Verilog HDL语言实现常用组合逻辑和时序逻辑的方法。
(4)了解Chipscope的功能与使用方法二、实验内容(1)熟悉S6 CARD实验板;(2)熟悉ISE集成开发环境;(3)3比特加法器仿真与上板实验(4)m序列产生器仿真与在板Chipscope调试三、实验要求按下面的说明逐步操作,实验结束后需经教师或助教验收,并将工作目录压缩后重新命名,命名规则为“组号_lab1.zip(rar)”,并分别撰写实验报告,上传到ftp上的”FPGA学生作业/实验一”文件夹。
四、实验过程说明(一)熟悉S6 CARD实验板1 S6 CARD开发板整体架构板卡体积小巧,面积与身份证大小相同,故命名为S6 CARD板卡,其实物图如图1所示。
图1 S6 CARD板卡实物图S6 CARD开发板以Spartan-6系列的XC6SLX9-TQ144芯片为核心,供电、下载与调试都通过板卡自身的USB接口完成,扩展了LED、GPIO、UART以及USB-JTAG电路,结构如图2所示。
此外,S6 CARD通过USB线完成板卡供电和调试,便于使用。
图2 S6 CARD板卡结构图其中,Flash芯片使用了32Mb的SPI Flash M25P32,容量大,也适合于嵌入式系统开发。
系统时钟由外部晶振给入,频率为50MHz。
2 S6 CARD开发板驱动电路1、LED驱动电路LED是最基本的电路组件,给高电平就发光,且发光的程序和驱动电流有关。
板卡的LED 电路如图3所示。
图3 S6 CARD LED电路2、按键和拨码开关电路LED、按键以及拨码开关本质上属于同一类设备,LED为输出设备,而按键和拨码开关属于输入设备。
按键为瞬时输入设备,仅在按下时维持一个固定输入,松开则返回到固定的逻辑相反状态。
《硬件描述语言》实验指导书南通大学电子信息学院2008 年 2 月1、目的和任务《硬件描述语言》是一门侧重于数字电子系统的设计和测试方法的课程,它的上机实验是教学中的一个重要环节。
通过上机学习,学生不仅可以系统地复习、巩固该课程的基本理论,而且培养学生解决问题能力和创新能力,同时为该课程的课程设计作准备。
2、教学基本要求(1)、熟练使用 EDA 软件(Quartus II、ModelSim);(2)、掌握用 Verilog HDL 实现组合逻辑电路和时序逻辑电路的方法。
3、实验条件(1)、PC 机、Quartus Ⅱ软件和 ModelSim软件(2)、GW48型 EDA 实验开发系统(EP1K30TC144-3)4、实验内容序号实验内容1 实验一设计工具的使用2 实验二组合逻辑电路设计(一)3 实验三组合逻辑电路设计(二)4 实验四总线与总线操作5 实验五时序逻辑电路设计(一)6 实验六时序逻辑电路设计(二)5、实验成绩实验成绩的评定由实验的验收等级和实验报告等级两个部分组成,各占50%。
实验的验收等级和实验报告等级均采用 5 个等级,即优、良、中、及格和不及格。
实验成绩占本课程平时成绩的50%。
实验一设计工具的使用1、实验目的与要求掌握在 Quartus Ⅱ开发环境下,运用硬件描述语言输入法对“三人表决器”进行设计输入、编译、调试和仿真的方法。
“三人表决器”电路的输入为 SW1、SW2 和 SW3,输出为 L3 和 L4,位宽均为 1 位。
当SW1、SW2 和 SW3中有超过2个以上的输入为1时,要求熟悉整个设计流程,从打开、建立文档、编辑、编译、建立激励信号波形及最后仿真的整个过程。
2、实验内容(1)在Quartus Ⅱ开发环境下,建立工程,并将三人表决器的硬件描述语言程序输入;(2)完成编译、调试和仿真,分析实验仿真结果,并判断其正确性。
3、教学形式(1)本实验为验证型实验,学生在实验前预习实验指导书;(2)指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验中的难点和注意事项进行一定的说明;(3)实验结束之后,学生按照实验报告的书写格式自行完成实验报告。
数字电子技术实验指导书(2010-8-6)注意事项:1、进入实验室(一教805)必须穿鞋套,否则不允许进入实验室。
2、进入实验室后遵守实验室的规章制度3、该课程共有6个实验,实验内容有验证性、综合性和设计性实验。
在做实验之前必须做好预习工作。
完成每个实验的预习要求,明确实验目的,切实地掌握理论知识和实验原理,尽量做到带着问题来实验。
对于设计性实验,需要预先设计好电路,画出电路原理图和器件引脚连接图。
4、进入实验室学生要细心连接电路,通电前须仔细检查电路的电源电压和接地情况,检查无误后通电。
出现问题时要冷静的分析并查找原因。
对实验过程中出现的现象、电路调整的过程以及测量结果要认真、客观的记录。
做实验的过程中最多是2人一组,2人互相配合完成实验,发现不积极主动做实验的,本次实验成绩为0。
5、实验时注意观察,若发现有破环性现象(如元器件发烫、异味、冒烟),应立即关断电源,保持现场,并报告指导老师,找出原因,排除故障,经指导老师同意后再继续实验。
6、实验完成后要让指导教师检查实验结果,正确后方可拆除电路。
7、实验结束后,撰写实验报告(电子版),分析和整理实验数据,加深对理论知识和实验原理的理解,增强利用理论知识,解决设计问题的能力。
实验报告的格式在网络教学平台,自己下载。
8、有2个或2个以上的实验没有完成,该课程的实验成绩为不及格。
实验项目:实验一:门电路逻辑功能及参数测试一、实验目的1 •熟悉数字逻辑实验箱的结构、基本功能和使用方法。
2•掌握常用非门、与非门、异或门的逻辑功能及其试方法二、实验器材1.数字逻辑实验箱DICE-SEM1台2.万用表1只3.元器件:74LS002块74LS04 (或CD4069 74LS20 74LS86 各1 块导线若干三、实验说明1 •数字逻辑实验箱提供+ 5V ± 12V的直流电源供用户使用。
2•连接导线时,为了便于区别,最好用不同颜色导线区分电源和地线,一般用红色导线接电源,用黑色导线接地。
《FPGA设计》实验指导书安全操作注意事项1、接插下载电缆前,请务必关闭开发板开关,避免损坏下载电缆或实验箱器件。
2、操作过程中应防止静电,手指不可以接触开发板的扩展口引脚。
3、保持实验室整洁。
4、小心轻放,避免不必要的硬件损伤或者人身受伤。
实验一 Quartus ii软件的操作使用一、实验目的1、熟悉Quartus II软件的使用;2、掌握用原理图输入法和硬件描述语言(Verilog HDL)两种方法来设计逻辑电路;3、通过电路的仿真及验证,进一步了解2选1多路选择器的功能;二、实验内容1、用原理图输入法来设计2选1多路选择器参照按图1-1所示来编辑完成2选1多路选择器的原理图输入,其中a、b、为数据输入端,sl为控制输入端,out为2选1多路选择器输出端。
图1-1 2选1多路选择器原理图2、用Verilog HDL硬件描述语言来设计数据选择器三、实验仪器、设备及材料电脑、EDA软件、实验箱、下载电缆。
四、实验原理2选1多路选择器的RTL图及真值表如图1-2及表1-1所示。
图1-2 2选1多路选择器的RTL图选择输入sl 输出out0 a1 b五、重点、难点本实验技术重点在于理解2选1多路选择器的功能后,用原理图输入法和硬件描述语言(Verilog HDL)两种方法来设计该逻辑电路。
六、实验步骤(一)原理图输入法的设计步骤:进入Windows 操作系统,双击Quartus II图标,启动软件。
1、单击File \ New Project Wizard菜单,输入文件名路径与设计项目的名字mux21a,点击finish, 建立设计项目。
点击Assignment \ Device菜单,选择器件(本设计选用cyclone 系列的EP4CE6E22C8)。
2、启动菜单File \ New,选择Block Diagram/Schematic File,点OK,启动原理图编辑器。
画出图1-1(在原理图空白处双击,会出现元件选择对话框,在name处输入元件名,点OK完成元件放置。
第一章概述YD-FPGA实验仪是由湖南远达电子有限公司设计的YD系列FPGA实验仪之一,是一种功能强大的现场可编程逻辑器件应用技术学习、开发工具,为电子爱好者进入可编程逻辑器件应用设计领域铺造了一条捷径。
YD-FPGA实验仪为用户提供了一个对可编程逻辑器件进行学习的好平台,实验仪除了用Xilinx公司的SpartanII系列的XC2S100E的FPGA芯片制作成子板作为实验仪的控制核心,还设计了母板向用户提供了外围器件和设备接口,可使用户快速掌握FPGA的原理及其实用接口技术。
一、YD-FPGA实验仪1.1 功能特点(1)YD-FPGA实验仪编程简单,程序仿真和下载也十分方便,特别是对设计者来说缩短了设计周期,提高了设计的灵活性和产品的精度。
(2)板上集成众多常用接口电路:2KSRAM芯片24C02、8个LED显示、8个按键,4个8段数码管与8键拨盘开关组成的键盘/显示电路;RS232串行通讯接口电路(MAX232);串行I2C总线接口电路(24C02);8位串行A/D转换电路(TLC549);8位串行D/A转换器(DAC0832);字符液晶显示屏接口电路;无源蜂鸣器电路(BUZZER);这些实用接口电路能够提供用户领先的应用设计方法;(3)提供实验电路的各部分原理图,提供各个实验课题的程序源代码,浅显易懂,使用户快速掌握FPGA器件的设计方法;(4)利用YD-FPGA实验仪引出的信号,可以连接自己的实际应用系统。
(5)YD-FPGA实验仪分子板和母板,子板可以解下来直接作为产品的设计核心。
(6) 本实验仪配置了E2PROM芯片XC18V02,实验仪可以掉电脱机运行。
1.2 实验课题YD-FPGA实验仪集成有易用的软件资源和丰富的硬件资源,可向使用者提供多种实验课题:(1)设有2位独立按键、8个LED,实现I/O接口实验;(2)设有4个8段数码管,8个拨盘按键,实现键盘控制实验;(3)串口扩展RS232通讯电路,实现PC与FPGA的通讯实验;(4)扩展I2C接口的2KRAM芯片24C02,实现I2C接口实验和外部存储器实验;(5)扩展8位串行A/D转换电路TLC549,实现A/D转换实验;(6)扩展8位串行D/A转换电路DAC0832,实现D/A转换实验;(7)扩展字符液晶显示屏接口,实现液晶显示实验;(8)扩展1个无源蜂鸣器BUZZER,实现音乐输出、PWM输出实验;(9)FPGA实验仪资源丰富,利用它可以模拟实际运行目标,实现各系统的功能设计。
《硬件描述语言与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);output equal;assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,//equal输出为0。
endmodule测试模块源代码:`timescale 1ns/1ns`include "./compare.v"module comparetest;reg a,b;wire equal;initialbegina=0;b=0;#100 a=0; b=1;#100 a=1; b=1;#100 a=1; b=0;#100 $stop;endcompare compare1(.equal(equal),.a(a),.b(b));endmodule仿真波形如下:五、实验步骤1.建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的2.编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;3.观察综合后生成的文件和源文件的不同点和相同点。
4. 综合时采用不同的FPGA器件,观察综合后的结果有什么不同。
六、实验报告要求1.要求实验报告中有编写模块源码和测试模块;2.要求实验报告中有综合后RTL图形;3.要求实验报告中有仿真后的波形;4. 对课后思考题进行分析说明。
七、实验注意事项1.采用Altera公司的Cyclone II系列的EP2C35型FPGA作为建立工程、代码编译、综合库时使用的库器件;2.综合使用synplify工具,布局布线使用quartus II自带工具;3.仿真使用ModelSim工具。
八、思考题1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial 块有什么关系?2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?3.比较两种测试方法,哪一种更全面?实验二简单分频时序逻辑电路的设计一、实验目的1.掌握条件语句在简单时序模块设计中的使用;2. 掌握verilog语句在简单时序模块设计中的使用;3.学习在Verilog模块中应用计数器;4.学习测试模块的编写、综合和不同层次的仿真。
二、实验内容1.使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。
得到如下波形图:2.对模块进行RTL级仿真、综合后门级仿真,布局布线仿真;三、实验仪器、设备预装了开发工具synplify、ModelSimSE的PC机。
四、实验原理1.使用always过程赋值语句对上升沿进行响应,当时钟信号上升沿到来时,系统判断清零信号是否为0,如果为0,则clk_out信号清零,否则clk_out信号翻转clk_out=~clk_out。
2.系统1/2分频原理:一个时钟周期的上升沿时刻,若清零信号reset不为0,输出信号跳变一个周期,输入时钟信号需经过两个周期的上升沿,输出周期为输入周期的两倍,输出频率为输入频率的1/2,这样就完成了1/2分频的效果。
下面是一个可综合的1/2分频器模型。
//half_clk.v---------------------------------------module half_clk(reset,clk_in,clk_out);input clk_in,reset;output clk_out;reg clk_out;always @(posedge clk_in)beginif(!reset) clk_out=0;elseclk_out=~clk_out;endendmodule3.测试模块中,输入周期为200ns的时钟信号,初始化语句initial将时钟信号置0,清零信号先置1,经过10ns置0,开始清零,再经过110ns后置1,开始测试。
设定测试循环时间为100ms,经过100ms以后测试停止。
测试模块的源代码://top.v--------------------------------------------`timescale 1ns/100ps`define clk_cycle 50module top;reg clk,reset;wire clk_out;always #`clk_cycle clk=~clk;initialbeginclk=0;reset=1;#10 reset=0;#110 reset=1;#100000 $stop;endhalf_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));endmodule五、实验步骤1.建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。
2.编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。
得到波形图。
3.观察综合后生成的文件和源文件的不同点和相同点。
4.记录数据并完成实验报告。
六、实验报告要求1.要求实验报告中有编写模块源码和测试模块。
2.要求实验报告中有仿真后的波形。
3.实验报告中对思考题进行分析说明。
七、实验注意事项1.注意在always块中,被赋值的信号都必须定义为reg型,这是由时序逻辑电路的特点所决定的。
2.对与reg型数据,如果未对它进行赋值,仿真工具会默认它为不定态。
八、思考题1.如果没有reset信号,能否控制2分频clk_out信号的相位?2.只用clk时钟沿的触发(即不用2分频产生的时钟沿)如何直接产生4分频、8分频、或者16分频的时钟?3.如何只用clk时钟沿的触发直接产生占空比不同的分频时钟?实验三利用条件语句实现计数分频时序电路一.实验目的:1.掌握条件语句在简单时序模块设计中的使用;2.掌握最基本时序电路的实现方法;3.学习在Verilog模块中应用计数器;4. 学习测试模块的编写、综合和不同层次的仿真。
二.实验内容:1.复习课本,熟悉条件语句的使用方式;2.建立工程并编写源代码;3. 综合并布局布线仿真并分析always语句在时序逻辑中的作用;4. 学习测试模块的编写、综合和仿真。
图3.1 技术分频器波形三.实验设备:预装了Active-HDL6.2及Synplify7.0的PC机。
四、实验原理1.复位信号reset为低电平时,对电路中的寄存器进行复位,F输出低电平信号。
利用分频器的设计原理,在程序中设计一个计数器,在时钟的上升沿计数,当计数值为19时(此时时钟已经产生了20个上升沿),输出信号F翻转为高电平,高电平的持续时间为10us。
之后,复位信号再次将F复位为低电平,低电平的持续时间为10us。
2.条件语句示例:可综合风格的分频器。
它的功能是将10M的时钟分频为500K的时钟。
基本原理与1/2分频器是一样的,但是需要定义一个计数器,以便准确获得1/20分频。
模块源代码:// --------------- fdivision.v -----------------------------module fdivision(RESET,F10M,F500K);input F10M,RESET;output F500K;reg F500K;reg [7:0]j;always @(posedge F10M)if(!RESET) //低电平复位。
beginF500K <= 0;j <= 0;endelsebeginif(j==19) //对计数器进行判断,以确定F500K信号是否反转。
beginj <= 0;F500K <= ~F500K;endelsej <= j+1;endendmodule测试模块源代码:--------------fdivision_top.v---------------`timescale 1ns/100ps`define clk_cycle 50module division_top;reg F10M,RESET;wire F500K_clk;always #`clk_cycle F10M=~F10M;initialbeginRESET=1;F10M=0;#100 RESET=0;#100 RESET=1;#10000 $stop;endfdivision fdivision(.RESET(RESET),.F10M(F10M),.F500K(F500K_clk));endmodule五、实验步骤1.建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试;2.编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真;3.观察综合后生成的文件和源文件的不同点和相同点;4. 综合时采用不同的FPGA器件,如Altera公司的Cyclone II系列和Stratix III系列,观察综合后的结果有什么不同。