EDA实验报告答案全

  • 格式:doc
  • 大小:139.50 KB
  • 文档页数:28

下载文档原格式

  / 46
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

参考模板千万不要照抄否则后果很严重多写点自己在实验时遇到的问题前四个实验报告详细后四个报告可以适当简略

《EDA技术及应用》

实验报告

系部:电子通信工程系指导教师:张松炜

学号:___________

姓名:_______

同组人:______________

二О____年____月___日

实验一点亮LED设计

一、实验目的

通过此试验可以让大家逐步了解,熟悉和掌握FPGA开发软件Quartus II的使用方法及VerilogHDL的编程方法。

二、实验内容

本实验是一个简单的点亮LED灯的实验,具体包括:

1)使用Quartus II建立一个工程;

2)Quartus II工程设计;

3)设置编译选项并编译硬件系统;

4)下载硬件设计到目标FPGA;

5)观察LED的状态;

三、实验原理

和单片机一样,向片子里写进数据,输出高电平(对于共阴极的),或者输出低电平(对于共阳极)。根据Cyclone片子已经分配好的针脚设置好针脚。

四、实验步骤

建立-----个工程-----输入程序-----软件编译

------生成下载文件-----下载—调试。

五、实验程序

module led1(led); //模块名led1

output[7:0] led; //定义输出端口

reg[7:0] led; //定义寄存器

always //过程1

begin

led = 8'b10101010; //输出0xAA

end

endmodule

六、思考题

(1)写出使用QuartusII软件开发工程的完整的流程。

建立一个工程—输入程序—软件编译综合—生成下载文件—

下载—硬件调。

实验二流水灯实验

一、实验目的

通过此试验让大家进一步了解熟悉和掌握FPGA开发软件的使用方法及软件编程方法。学习简单的时序电路的设计和硬件测试。

二、实验内容

本实验的内容是建立用于控制LED流水灯的简单硬件电路,要求在SmartSOPC上实现LED1-LED8发光二极管流水灯的显示。

三、实验原理

这里的显示用分频模块(int_div)得到的较低的始终作为信号,在此时钟下,对输入数据进行移位,就得到了流水灯的效果。 四、实验步骤

建立工程—输入源程序—调用模块—生成符号—调用符号—连成电路图—编译—下载—调试

五、实验程序 原理图

VCC

clock

INPUT led[7..0]

OUTPUT

clk led[7..0]

ledwater

inst

F_DIV 24000000F_DIV_WIDTH 25

Parameter Value

clock

clk_out

int_div

inst1

六、思考题

1.本实验顶层采用了图形输入的方式,若采用文本输入方式,如何编写顶层文件?写出相应程序。

module led2(clock,led); input clock; output [7:0]led; wire p;

int_div u1( .clock(clock),.clk_out(p)); ledwater u2(.clk(p),.led(led)); endmodule

实验三键盘、LED发光实验

一、实验目的

本实验的主要目的是联系顶层模块的设计。学习和体会分支条件语句case的使用及FPGA的I/O控制。

二、实验内容

用跳线把key1-key8和指定的引脚连起来,以实现功能控制。

三、实验原理

FPGA的所有的I/O控制块允许每个引脚单独的配置为输入口。只要配置正确,则一暗淡几个键中有键输入,在检测到键盘输入的情况下,继续判断其键盘值并作出相应的处理。

四、实验步骤

1:按以前的步骤建立工程,并按说明书进行配置引脚,未用的按三态处理。2:对文件进行编译,并检错。3:按说明短接跳帽和连接跳线。4:观察输入情况。

五、实验程序

module keyled(key,led); //模块名keyled

input[7:0] key; //定义键盘输入口

output[7:0] led; //定义发光管输出口

reg[7:0] led_r; //定义寄存器

reg[7:0] buffer_r;

assign led = led_r; //输出键值

always@(key) //过程1

begin

buffer_r = key; //读取键值

case(buffer_r)

8'b11111110:led_r = 8'b11111110; //是键KEY1,则给寄存器赋值0xfe

8'b11111101:led_r = 8'b11111100; //是键KEY2,则给寄存器赋值0xfc

8'b11111011:led_r = 8'b11111000; //是键KEY3,则给寄存器赋值0xf8

8'b11110111:led_r = 8'b11110000; //是键KEY4,则给寄存器赋值0xf0

8'b11101111:led_r = 8'b11100000; //是键KEY5,则给寄存器赋值0xe0

8'b11011111:led_r = 8'b11000000; //是键KEY6,则给寄存器赋值0xc0

8'b10111111:led_r = 8'b10000000; //是键KEY7,则给寄存器赋值0x80

8'b01111111:led_r = 8'b00000000; //是键KEY8,则给寄存器赋值0x00

default: led_r = 8'b11111111; //否则给寄存器赋值0xff endcase

end

endmodule

六、思考题

1.能否用if语句改写本实验程序?如果能,写出相应程序。module keyled(key,led); //模块名keyled

input[7:0] key; //定义键盘输入口

output[7:0] led; //定义发光管输出口

reg[7:0] led_r; //定义寄存器

reg[7:0] buffer_r;

assign led = led_r; //输出键值

always@(key) //过程1

begin

buffer_r = key; //读取键值

if (buffer_r==8'b11111110) led_r = 8'b11111110;

else if (buffer_r==8'b11111101) led_r = 8'b11111100;

else if (buffer_r==8'b11111011) led_r = 8'b11111000;