基于EDA的FPGA的实验开发板的设计与程序调试课程设计报告.doc
-
资源ID:2386619
资源大小:782.50KB
全文页数:20页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于EDA的FPGA的实验开发板的设计与程序调试课程设计报告.doc
专业课程设计报告课设名称:基于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、阎石.数字电子技术基础.北京:高等教育出版社,20063、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 ISsignal 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" => dataout_xhdl1 <= "00011001" WHEN "1010" => dataout_xhdl1 <= "00010001" WHEN "1011" => dataout_xhdl1 <= "11000001" WHEN "1100" => dataout_xhdl1 <= "01100011" WHEN "1101" => dataout_xhdl1 <= "10000101" WHEN "1110" => dataout_xhdl1 <= "01100001" WHEN "1111" => dataout_xhdl1 <= "01110001" WHEN OTHERS => dataout_xhdl1 <= "00000011" END CASE; END PROCESS; end arch;