当前位置:首页 > FPGA课程设计(最终版)要点
武汉理工大学FPGA应用课程设计
# FDR : 18 # Clock Buffers : 1 # BUFGP : 1 # IO Buffers : 18 # IBUF : 9 # OBUF : 9
========================================================================= Device utilization summary: ---------------------------
Selected Device : 2vp30ff896-7
Number of Slices: 47 out of 13696 0% Number of Slice Flip Flops: 22 out of 27392 0% Number of 4 input LUTs: 84 out of 27392 0% Number of IOs: 19
Number of bonded IOBs: 19 out of 556 3% Number of GCLKs: 1 out of 16 6% --------------------------- Partition Resource Summary: ---------------------------
No Partitions were found in this design. ---------------------------
30
武汉理工大学FPGA应用课程设计
6心得体会
在此次课程理论设计中,不可避免地遇到许多棘手的问题,一是对EDA技术的不太了解,二是对理论知识的学习不够扎实。由于初涉VHDL语言以致很多语法和语言基本结构、算法生疏,运用不灵活,在编写源程序上遇到极大的难题,而且在编译运行程序时对出错的语句理解不到位,导致难于下手修正错误语句、语法,这使得在设计程序时遇到更大的很大的麻烦。在初次编写分频模块时候,使用的是比较基本的计数器分频法,编写程序后进行了仿真,发现无法观察到分频情况。经过查找资料和请教同学,知道了因为分频比过大,所以在波形图中很难观察到。而且由于预分频的占空比很小,更难以观察到高电平。在原因找到后,为了考察程序的性能,我将输入频率减小。同时适当缩小分频比,这样就得到了模块仿真中的分频波形。最后终于将顶层模块和三个子模块编写完成,编译成功,完成了该系统的文本设计。
这次的FPGA课程设计,既锻炼了我的动手能力,也让我加深了对课堂上所学到的理论知识的理解,这给我提供了一个在学习生活中很难得的理论联系实际的机会。另外我也发现了在平时学习过程中难于发现的许多缺点不足。比如实践的机会过少,所学的理论知识不能够灵活运用,因此在遇到实际的问题时无法正确处理;再者在课堂上获得的专业知识过于浅显,很多的有关基本操作原理、操作方法都理解不了;课外知识了解的也过少,导致在课程设计初期,面对完全陌生的设计课题无从下手,不知所措。
学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。
31
武汉理工大学FPGA应用课程设计
7参考文献
[1]潘松,黄继业. EDA技术实用教程(第三版)[M].北京:科学出版社,2006. [2]李冬梅.PLD器件与EDA技术[M].北京:北京光播学院出版社,2000. [3]赵俊超.集成电路设计VHDL教程[M].北京:北京希望电子出版社,2002. [4]潘松,黄继业.EDA技术与VHDL[M].北京:清华大学出版社,2004.
[5]赵曙光,郭万有.可编程逻辑器件原理,开发与应用[M].西安:电子科技大学出版社,2000.
32
武汉理工大学FPGA应用课程设计
8附录
程序清单: 顶层模块:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity top is
Port ( clk32MHz :in std_logic; --32MHz系统时钟
handTOauto : in std_logic; --键盘输入/自动演奏 code1 :out std_logic_vector(6 downto 0); --音符显示信号 index1 :in std_logic_vector(7 downto 0); --键盘输入信号 high1 :out std_logic; --高低音节信号 spkout :out std_logic); --音频信号
end top;
architecture Behavioral of top is component automusic
Port ( clk :in std_logic;
Auto: in std_logic; index2:in std_logic_vector(7 downto 0); index0 : out std_logic_vector(7 downto 0));
end component; component tone
Port ( index : in std_logic_vector(7 downto 0);
code : out std_logic_vector(6 downto 0); high : out std_logic; tone0 : out integer range 0 to 8191);
end component; component speaker Port ( clk1 : in std_logic;
tone1 : in integer range 0 to 8191; spks : out std_logic);
end component;
signal tone2: integer range 0 to 8191; signal indx:std_logic_vector(7 downto 0); begin
33
u0:automusic port map(clk=>clk32MHZ,index2=>index1,index0=>indx,Auto=>handtoAuto); u1: tone port map(index=>indx,tone0=>tone2,code=>code1,high=>high1); u2: speaker port map(clk1=>clk32MHZ,tone1=>tone2,spks=>spkout);
end Behavioral;
共分享92篇相关文档