基于EDA的FPGA的实验开发板的设计与程序调试课程设计报告

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

专业课程设计报告

课设名称:基于EDA的FPGA实验开发板

的设计

目录

1、设计任务及内容

2、系统硬件设计(要求对系统每部分电路进行介绍)

3、系统软件设计(画出程序流程图)

4、系统调试

5、课程设计总结

6、参考文献

7、附录(系统硬件原理图以及程序代码)

一:设计任务及内容

设计任务:基于EDA的FPGA的实验开发板的设计与程序调试。

设计内容:开发板底板和核心板原理图以及PCB的设计,程序的编写与下载调试。

二:系统硬件设计

核心板部分

1、电源部分:

通过5V直流供电,经过电容滤波

2、蜂鸣器部分:

通过三极管驱动蜂鸣器,可以播放一些简单的音乐

3、PS2键盘:

可以用作一般通讯目的或者嵌入式系统和片上系统调试

4、1602-12964LCD液晶显示屏:

LCD模块接口,显示点阵为128x64;一种为T6963控制器的LCD模块

5、串口:

6、VGA部分:

VGA接口就是显卡上输出模拟信号的接口

7、步进电机部分:

通过编写程序可以控制步进电机的转速

8、LED灯部分:

可以通过vhdl语言编程来控制发光二极管按顺序依次点亮

9、按键部分:

人机交换部分,更加智能与方便10、数码管部分:

11、双排底座:

与核心板的链接部分

核心板部分1、晶振部分:

为芯片提供时钟信号

2、排针部分

与外部器件的连接部分3、电源部分:

为芯片供电

4、JTAG部分:

与计算机进行数据通信,程序的下载

5、核心芯片:

FPGA核心部分,控制各模块的工作三:系统软件设计

四:系统调试

软件仿真:

利用quartus2软件将编写好的程序进行时序仿真,得到波形图如下

五课程设计总结

通过这次课程设计,让我们学会了如何应用AD6这款软件进行原理图与PCB的绘制,期间遇到了很多困难,不过通过查询资料和咨询老师,我们最后还是能够基本上完成了任务。通过这次课设,学会了很多东西,比如如何自己利用AD6绘制一个元器件,怎么利用AD6进行PCB正方面的设计,怎么布铜等等。当然只是通过这次课设我们也学会了团队合作的重要性,组员之间分工明确,使得任务完成的更加轻松。总之,这次可是让我们受益匪浅,感谢学校给我们这次机会,更加感谢刘老师的悉心指导!

六参考文献

1、sopc-eda实验指导书

2、阎石.数字电子技术基础.北京:高等教育出版社,2006

3、AD6使用指导

4、FPGA开发板使用说明书

附录:

底板原理图与PCB

核心板原理图与PCB

程序代码:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY seg70 IS

PORT (

clk : IN std_logic;

rst : IN std_logic;

dataout : OUT std_logic_vector(7 DOWNTO 0); --各段数据输出

en : OUT std_logic_vector(7 DOWNTO 0)); --COM使能输出

END seg70;

ARCHITECTURE arch OF seg70 IS

signal cnt_scan : std_logic_vector(15 downto 0 );

signal data4 : std_logic_vector(3 downto 0);

signal dataout_xhdl1 : std_logic_vector(7 downto 0);

signal en_xhdl : std_logic_vector(7 downto 0);

begin

dataout<=dataout_xhdl1;

en<=en_xhdl;

process(clk,rst)

begin

if(rst='0')then

cnt_scan<="0000000000000000";

elsif(clk'event and clk='1')then

cnt_scan<=cnt_scan+1;

end if;

end process;

process(cnt_scan(15 downto 13))

begin

case cnt_scan(15 downto 13) is

when"000"=> en_xhdl<="11111110";

when"001"=> en_xhdl<="11111101";

when"010"=> en_xhdl<="11111011";

when"011"=> en_xhdl<="11110111";

when"100"=> en_xhdl<="11101111";

when"101"=> en_xhdl<="11011111";

when"110"=> en_xhdl<="10111111";

when"111"=> en_xhdl<="01111111";

when others=> en_xhdl<="11111110";

end case;

end process;

process(en_xhdl)

begin

case en_xhdl is

when "11111110"=> data4<="0000";

when "11111101"=> data4<="0001";

when "11111011"=> data4<="0010";

when "11110111"=> data4<="0011";

when "11101111"=> data4<="0100";

when "11011111"=> data4<="0101";

when "10111111"=> data4<="0110";

when "01111111"=> data4<="0111";

when others => data4<="1000";

end case;

end process;

process(data4)

begin

case data4 is

WHEN "0000" =>

dataout_xhdl1 <= "11000000"; WHEN "0001" =>

dataout_xhdl1 <= "11111001"; WHEN "0010" =>

dataout_xhdl1 <= "10100100"; WHEN "0011" =>

dataout_xhdl1 <= "10110000"; WHEN "0100" =>

dataout_xhdl1 <= "10011001"; WHEN "0101" =>

dataout_xhdl1 <= "10010010"; WHEN "0110" =>

dataout_xhdl1 <= "10000010"; WHEN "0111" =>

dataout_xhdl1 <= "11111000"; WHEN "1000" =>

dataout_xhdl1 <= "10000000"; WHEN "1001" =>

相关文档
最新文档