文档库 最新最全的文档下载
当前位置:文档库 › FPGA设计实验指导书

FPGA设计实验指导书

《FPGA设计》实验指导书

江西省赣州市安远县第一中学的欧阳玉萍(A V女优衰ZB、骚B)、蔡松林、罗瑞锋、何昌衡全家死光光!

安全操作注意事项

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 HDL)两种方法来设计该逻辑电路。

其难点是要仿真出4选1数据选择器的波形,然后通过观测仿真波形,来验证该数据选择器的功能。

六、实验步骤

(一)原理图输入法的设计步骤:

(1)进入Windows 操作系统,双击Quartus II图标,启动软件。

1、单击File \ New Project Wizard菜单,输入文件名路径与设计项目的名字

mux41,点击finish, 完成设计项目建立。

点击Assignment \ Device菜单,选择器件(本设计选用cyclone 系列的

EP1C12Q240C8)。

2、启动菜单File \ New,选择Block Diagram/Schematic File,点OK,启动原理图编辑器。画出图1-1(具体方法见后面说明)。默认存盘名为mux41,保存。(2)设计的输入

1. 在原理图空白处双击,会出现元件选择对话框,在name处输入元件名,

点OK完成元件放置。依次放置4个三输入端与门(and3)、1个四输入端或门(or4),2个非门(not)器件、及6个输入端(input)、1个输入端(output)在原理图上;

2. 添加连线到器件的管脚上

把鼠标移到元件引脚附近,则鼠标光标自动由箭头变为十字,按住鼠标右键拖动,即可画出连线,参照图1连好相应元件的输入、输出脚。

3.保存原理图

单击保存按钮。原理图文件出现在红色箭头所指的地方。

(3)编译

点击菜单栏上红色箭头所指的工具图标,完成编译。

图1-3 编译

编译没有错误可以进行仿真。点击 File \ New菜单。选择other files中的vector waveform file。画出输入波形,执行仿真命令,启动仿真并观察仿真波形,进行设计电路的功能验证。

点击开始仿真

图1-4 新建波形文件的选择对话框

(二)用Verilog HDL语言完成的设计步骤:

(1)、运行Quartus II软件,先建立一个新的项目。

;

(2)、启动File \ New菜单命令(如图1-5)

(3)、选择verilog hdl file,点击OK后,键入上面“二、实验内容”中的程序。

(4)、以默认文件名和路径保存。

(5)参照原理图输入设计进行仿真,并观察仿真波形,以验证所设计电路的功能。

七、实验报告要求

1. 对于原理图设计要求有设计过程。

2. 详细论述实验步骤。

八、实验注意事项

1. 使用原理图设计时,其文件名[mux41.gdf]要与仿真的波形文件名[mux41.vwf]相同,只是文件的后缀不同;使用Verilog HDL语言设计时,其文件名(m4_1.V)要与模块名[module m4_1( a, b, c, d, sel, q);]相同,且仿真的波形文件名[m4_1.vwf]也要相同。

2. 用原理图输入法和Verilog HDL语言两种方法所做的设计,一定要建两个不同的工程,最好放在不同的目录中,且目录名不要出现中文字符。

3.在Waveform Editor仿真时,应先在菜单选项的Edit/ Grid Size…中所弹出的对话框中将Grid Size:改为1.0us;并菜单选项的Edit/ End Time…中所弹出的对话框中将Grid Size改为100.0us,以方便观察、理解仿真得到的波形。

九、思考题

1. 如何用设计好的4选1数据选择器,来实现8选1数据选择器的设计(用原理图输入法来设计),试给出设计与仿真的结果。

2.谈谈使用原理图输入法和Verilog HDL语言设计两种方法的优劣心得。

实验二组合逻辑电路设计

一、实验目的

1、继续学习Verilog HDL基本语法;

2、巩固Quartus II环境下的Verilog HDL编程设计的基础

二、主要仪器设备

EDA实验系统1台

PC机

三、实验内容

1、设计一个四线至二线编码器,其真值表如下:

表2.1 四线至二线编码器的真值表

2、设计一个2位信号的比较器,该比较器的电路符号如图2.1所示。

图2.1 比较器电路符号

引脚说明:A、B皆为二位信号;CLK为时钟脉冲输入;RST为清除控制信号。

AGTB:当A>B时,其值为1,否则为0;

AEQB:当A=B时,其值为1,否则为0;

ALTB:当A

3、设计一个八位全加器。

四、实验报告

根据以上实验内容写出实验报告,包括程序设计,软件编译,管脚分配,硬件测试结果等内容。

实验三一般计数器的设计及ModelSim 仿真测试

一、实验目的

1、掌握一般计数器的设计方法;

2、了解ModelSim 仿真测试方法。

二、主要仪器设备

EDA实验系统1台

PC机

三、实验内容

1、设计一个8421BCD十进制计数器,并将计数结果在LED或数码管上显示。

2、利用ModelSiml工具进行仿真测试。

四、ModelSim仿真步骤

见参考资料《ModelSim操作简介》

五、实验报告

根据以上实验内容写出实验报告,包括程序设计,软件编译,仿真结果及分析,硬件测试等内容。

实验四时序逻辑电路设计

一、实验目的

理解触发器和计数器的概念,掌握时序器件的Verilog HDL语言程序设计的方法二、主要仪器设备

EDA实验系统1台

PC机

三、实验内容

设计以下内容:

1、基本的D触发器;

2、同步复位的D触发器;

3、异步复位的D触发器;

4、同步置位/复位的D触发器;

5、设计一个简单的加法或减法计数器,并用LED或数码管显示

四、实验报告

根据以上实验内容写出实验报告,包括程序设计,管脚分配,用示波器观察D触发器波型;计数器用LED或数码管显示,并提交其仿真结果及分析。

实验五有限状态机(FSM)的设计

一、实验目的

1、了解FSM的应用范围和两种类型的不同特点;

2、掌握FSM的电路结构和设计要点。

二、主要仪器设备

EDA实验系统一台

三、实验原理

FSM适合于设计数字系统的控制模块。用Verilog HDL的case/if-else等语句能很好地描述基于状态机的设计。状态机可以认为是组合逻辑和时序逻辑的特殊组合。时序逻辑部分用于存贮状态,组合电路用于状态译码和产生输出信号。状态机的下一个状态不仅与输入信号有关,还与状态寄存器当前所处的状态有关。

状态机分为Mealy和Moore两种类型,前者的输出只是当前状态的函数,也就是状态的转换与输入信号无关,后者的输出则是当前状态和当前输入的函数,即状态的转换与输入信号有关。

状态机的表示方法:状态图、状态表和流程图。

四、实验内容

检测一个5位二进制序列“10010”

五、实验报告

根据以上实验内容写出实验报告,包括程序设计,软件编译,仿真结果及分析,硬件测试等内容。

实验六基于模块多层次引用的结构化电路设计

一、实验目的

1、了解复杂电路与系统的“top-down”设计思想;

2、掌握简单多层次电路的描述方法。

二、主要仪器设备

EDA/SOPC实验系统1台

三、实验原理

1、多层次结构电路的设计

复杂数字系统可采用“top-down”的方法进行设计:首先把系统分为几个模块,每个模块在分为几个子模块,依次类推,知道易于实现为止。

这种“top-down”的方法能够把复杂的设计分为许多简单的设计来实现,同时也适合于多人进行合作开发。

多层次结构电路的描述既可以采用文本方式,也可以采用图形和文本混合设计的方式。

被调用模块的指定方式:1)文件复制方式;2)使用`include语句;3)库管理方式。

2、设计实例分析

这个实例的功能是将并行数据转化为串行数据送交外部电路编码,并将解码后得到的串行数据转化为并行数据交由CPU处理。显而易见,这实际上是两个独立的逻辑功能,分别设计为独立的模块,然后再合并为一个模块显得目的明确、层次清晰。

模块源代码

// ---------------- p_to_s.v ---------------------------------

module p_to_s(D_in,T0,data,SEND,ESC,ADD_100);

output D_in,T0; // D_in是串行输出,T0是移位时钟并给

// CPU中断,以确定何时给出下个数据。

input [7:0] data; //并行输入的数据。

input SEND,ESC,ADD_100; //SEND、ESC共同决定是否进行并到串

//的数据转化。ADD_100决定何时置数。

wire D_in,T0;

reg [7:0] DATA_Q,DATA_Q_buf;

assign T0 = ! (SEND & ESC); //形成移位时钟。.

assign D_in = DATA_Q[7]; //给出串行数据。

always @(posedge T0 or negedge ADD_100) //ADD_100下沿置数,T0上沿移位。

begin

if(!ADD_100)

DATA_Q = data;

else

begin

DATA_Q_buf = DATA_Q<<1; //DATA_Q_buf作为中介,以令综合器

DATA_Q = DATA_Q_buf; //能辨明。

end

end

在p_to_s.v中,由于移位运算虽然可综合,但是不是简单的RTL级描述,直接用DATA_Q<=DATA_Q<<1的写法在综合时会令综合器产生误解。另外,在该设计中,由于时钟T0的频率较低,所以没有象以往那样采用低电平置数,而是采用ADD_100的下降沿置数。

//--------------------- s_to_p.v ---------------------------

module s_to_p(T1, data, D_out,DSC,TAKE,ADD_101);

output T1; //给CPU中断,以确定CPU何时取转化

//得到的并行数据。

output [7:0] data;

input D_out, DSC, TAKE, ADD_101; //D_out提供输入串行数据。DSC、TAKE

//共同决定何时取数。

wire [7:0] data;

wire T1,clk2;

reg [7:0] data_latch, data_latch_buf;

assign clk2 = DSC & TAKE ; //提供移位时钟。

assign T1 = !clk2;

assign data = (!ADD_101) ? data_latch : 8'bz;

always @(posedge clk2)

begin

data_latch_buf = data_latch << 1; //data_latch_buf作缓冲

data_latch = data_latch_buf; //,以令综合器能辩明。

data_latch[0] = D_out;

end

endmodule

将上面的两个模块合并起来的sys.v的源代码:

//------------------- sys.v ---------------------------

`include "./p_to_s.v"

`include "./s_to_p.v"

module sys(D_in,T0,T1, data, D_out,SEND,ESC,DSC,TAKE,ADD_100,ADD_101);

input D_out,SEND,ESC,DSC,TAKE,ADD_100,ADD_101;

inout [7:0] data;

output D_in,T0,T1;

p_to_s

p_to_s(.D_in(D_in),.T0(T0),.data(data),.SEND(SEND),.ESC(ESC),.ADD_100(ADD_100)) ;

s_to_p

s_to_p(.T1(T1),.data(data),.D_out(D_out),.DSC(DSC),.TAKE(TAKE),.ADD_101(ADD_101 ));

endmodule

四、实验内容

完成实验原理中的所有步骤,并用ModelSim进行仿真

五、实验报告

根据以上实验内容写出实验报告,包括仿真结果及分析、硬件实现、硬件测试等内容。

实验七交通灯设计

一、实验目的

综合运用Verilog HDL语言进行时序设计

二、主要仪器设备

EDA实验系统1台

PC机

三、实验内容

编写时序控制程序,实现东西、南北向的交通灯计数并亮灯的程序。东西、南北方向红灯、绿灯亮的时间各为30秒,黄灯亮时间为3秒;

表7.1 交通灯控制器的状态转换表

四、实验报告

根据以上实验内容写出实验方案,包括程序设计,软件编译,仿真结果及分析,硬件测试等内容。

选做实验一秒表的设计

一、实验目的

1、实现FPGA对四位动态数码管的控制;

2、熟悉模块化编程的操作流程

二、主要仪器设备

EDA/SOPC实验系统1台

三、实验要求

1、秒表的最小计时单位为0.1秒;

2、设计的秒表能够实现暂停和继续计时的功能。

五、实验报告

根据以上实验内容写出实验报告,包括程序设计,软件编译,仿真结果及分析,硬件测试等内容。

相关文档
相关文档 最新文档