EDA技术及应用试验报告纯手打
Word文档 . 《EDA 技术及应用》 实验报告 系部: 指导教师: 学号: . 姓名: Word文档 . 实验一实验一点亮点亮 LEDLED 设计设计 一、实验目的一、实验目的 通过此实验让用户逐步了解、熟悉和掌握 FPGA 开发软件 QuartusII 的使用方 法及 Verilog HDL 的编程方法。 本实验力求以详细的步骤和讲解让读者以最快的方式了解 EDA 技术开发以及 软件的使用,从而快速入门并激起读者对 EDA 技术的兴趣。 二、实验容二、实验容 SmartSOPC 实验箱上有 8 个发光二极管 LED1~8,并分别与 FPGA 的 50、 53~55、176 和 47~49 引脚相连。本实验的容是建立可用于控制LED 亮/灭的简单 硬件电路,要求点亮 SmartSOPC 实验箱上的 4 个发光二极管(LED1、LED3、LED5 和 LED7) 。 三、实验原理三、实验原理 FPGA 器件同单片机一样, 为用户提供了许多灵活独立的输入/输出 I/O 口 (单 元) 。FPGA 每个 I/O 口可以配置为输入、输出、双向I/O、集电极开路和三态门等 各种组态。作为输出口时,FPGA 的 I/O 口可以吸收最大为 24mA 的电流,可以直 接驱动发光二极管 LED 等器件。所以只要正确分配并锁定引脚后,在相应的引脚 上输出低电平“0”,就可以实现点亮该发光二级管的功能。 四、实验步骤四、实验步骤 1、启动 Quarters II 建立一个空白工程,命名为 led_test.qpf。然后分别建立图形设 计文件,命名为led_test.bdf,以及文本编辑文件led1.v,将他们都添加进工程中。 2、对工程进行设计。在led1.v 中输入程序代码,并保存,进行综合编译,若在编 译中发现错误,则找出并更正错误,直至编译成功为止。从设计文件中创建模块, 由 led1.v 生成名为 led1.bsf 的模块符号文件。在 led_test.bdf 中任意空白处双击鼠 标左键,将 symbol 对话框中 libraries:project 下的 led1 模块添加到图形文件 led_test.bdf 中,加入输入、输出引脚,双击各管脚符号,进行管脚命名。完整的 顶层模块原理图如下图所示。选择目标器件并进行引脚锁定。将未使用的管脚设 置为三态输入。 led1 led[70] OUTPUTled[70] 3、设置编译选项并编译硬件系统。将 led_test.bdf 设置为顶层实体。对该工程文 件进行全程编译处理。若在编译过程中发现错误,则找出并更正错误,直到编译 成功为止。 4、下载硬件设计到目标 FPGA。将产生的 led_test.sof 输出对 FPGA 进行配置。 5、观察 LED 的状态。 inst 五、实验程序五、实验程序 //利用连续赋值 assign 语句实现 module led1(led);//模块名 led1 output[7:0] led;//定义输出端口、 assign led =8 b10101010;//输出 0 xAA Word文档 . endmodule //利用过程赋值语句实现(暂时已屏蔽) /* module led1(led);//模块名 led1 output[7:0] led;//定义输出端口 reg[7:0] led;//定义寄存器 always//过程 1,无敏感变量 begin led = 8 b10101010;//输出 0 xAA end endmudule*/ 六、思考题六、思考题 写出使用 QuartusII 软件开发工程的完整的流程。 Word文档 . 实验二流水灯实验实验二流水灯实验 一、实验目的一、实验目的 通过此实验让用户进一步了解、 熟悉和掌握 CPLD/FPGA 开发软件的使用方法 及 Verilog HDL 的编程方法。学习简单时序电路的设计和硬件测试。 二、实验容二、实验容 本实验的容是建立可用于控制 LED 流水灯的简单硬件电路,要求在 SmartSOPC 实验箱上实现 LED1~LED8 发光二极管流水灯显示。 三、实验原理三、实验原理 1、在 LED1~LED8 引脚上周期性的输出流水数据,如原来输出的数据是 11111100 则表示点亮 LED1、LED2,流水一次后,输出的数据应该为 11111000,而此时则 应点亮 LED1~LED3 三个 LED 发光二极管,就可以实现 LED 流水灯。 为了观察方便, 流水速率最好在 2Hz 左右。 在 QuickSOPC 核心板上有一个 48MHz 的标准时钟源, 该时钟脉冲 Clock 与芯片的 28 管脚相连。为了产生 2Hz 的时钟脉冲,在此调用了 一个分频模块(int_div 模块,位于光盘中 EDA_Component 目录下) ,通过修改分 频系数来改变输出频,当分频系数为 24x10^6 时,输出即为 2Hz 的频率信号。 2、Int_div 分频模块说明:int_div 模块是一个占空比为 50%的任意整数分频器。输 入时钟为 clock, 输出时钟为 clk_out。 其中 F_DIV 为分频系数, 分频系数围为 1~2^n (n=F_DIV_WIDTH),若要改变分频系数,改变参数 F_DIV 和 F_DIV_WIDTH 到相应 围即可。在本例中输入时钟为48MHz,要得到 2Hz 的信号,所以分频系数为 48x10^6/2=24x10^6;对于分频系数为 24x10^6 的数需要一个 25 位宽的计数器 即可。 四、实验步骤四、实验步骤 1、启动 Quarters II 建立一个空白工程,命名为 led_water.qpf。 2、新建 Verilog HDL 源程序文件 ledwater.v,输入程序代码并保存,进行综合编 译,若在编译中发现错误,则找出并更正错误,直至编译成功为止。 3、从设计文件中创建模块,由 ledwater.v 生成名为 ledwater.bsf 的模块符号文件。 4、将光盘中 EDA_Component 目录下的 int_div.bsf 和 int_div.v 拷贝到工程目录。 5、新建图形设计文件命名为 led_water.bdf 并保存。在空白处双击鼠标左键,分 别将 symbol 对话框中 libraries:project 下的 ledwater 和 int_div 模块放在图形文 件 led_water.bdf 中,加入输入、输出引脚,双击各管脚符号,进行管脚命名。双 击 int_div 的参数框,并修改参数,将 F_DIV 的值改为 24000000,F_DIV_WIDTH 的值改为 25. 完整的顶层模块原理图如下图所示。 Word文档 . ParameterParameterValuue F_DIV24000000 F_DIV_WIDTH 25 int_div clock VCC ledwater clk_outclk led[70] OUTPUT clock led[70] instinst1 6、选择目标器件并进行引脚锁定。将未使用的管脚设置为三态输入。 7、将 led_water.