当前位置:首页 > 基于VHDL的数字时钟设计 - 图文
邵阳学院课程设计
结束语
这个实验带给我的体会很多也很深,我以前没有对数字时钟进行系统的设计,这次独立的设计,我遇到了很多问题,也走了很多弯路,还好最后终于通过自己的努力看到了理想的结果。通过实验,我对EDA技术和FPGA技术有了更进一步的理解,掌握了FPGA的层次化设计电路的方法,掌握了用VHDL语言编写各个功能模块并通过波形确定电路设计是否正确。掌握了下载验到目标器件的过程。
实验中遇到的问题很多,有的是很基础的但我却不知道,例如数码管的扫描频率,刚开始时数码管不显示,我找了很多原因都没想到是扫描频率的问题,浪费了很多时间。还有分频的时候,看过很多分频的电路程序,但那些并不是都可以实现准确的分频,需要通过波形进行验证。还有计数器的设计,我用了很长时间才编写出来,现在看看,也没有那么难了。
总之,我很感谢这次实验可以给我这样的机会,这个实验给了我很对的收获,我相信这会对我以后的学习和工作都有帮助。
16
邵阳学院课程设计
参考文献
[1] 周立功,SOPC嵌入式系统基础教程,北京航空航天大学出版社,2008.4 [2] 周立功,SOPC嵌入式系统实验教程,北京航空航天大学出版社,2006.7 [3] 张志刚,FPGA与SOPC设计教程—DE实践,西安电子科技大学出版社,2007 [4] 潘松 黄继业,EDA技术实用教程,科学出版社,2006.8
[5] 华清远见嵌入式培训中心,FPGA应用开发入门与典型实例,人民邮电出版社,2008.6
17
邵阳学院课程设计
致 谢
非常感谢李老师对我们的细心详细的指导,要不是李老师很仔细的检查我的课程设计,并从中发现我的诸多错误,我现在也没法这么快的把课程设计完成。 李老师为人随和亲切,上课时总是不忘记鼓励我们,老师非常耐心地给我们讲了这次课程设计应该要注意的地方,我们应该用什么心态去看待这次的课程设计,他说对课程设计对于电子科学与技术专业的学生是有很大帮助的,这可以提高我们的动手能力和协同能力,所以李老师要求我们一定要认真对待!老师的鼓励使我认识到以后还要多学习各种电子方面的书籍,多进行操作,提高动手能力和理论水平!在这次课程设计中我也遇到了比较多的问题,不过李老师每次都是不厌其烦给我们批改了,经过李老师的仔细批改,大部分的错误都解决了。老师无微不至的关怀和谆谆的教诲,高深的学术造诣让我获益匪浅,也让我学到了很多的关于课程设计的宝贵的经验,这是一生受益的事情!所以,再一次由衷的的感谢李老师,谢谢!
18
邵阳学院课程设计
附录 源程序代码
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity szz is
port( clk,k1,k2,k3,k4,c1,c2,ok2,ok3,reset1,reset2,clk2ms,xiang:in std_logic; s1,s2,m1,m2,h1,h2:in std_logic_vector(3 downto 0); clk2ms,clk500ms,clk1s,o1,o2,o3,o4,ck:out std_logic; out1,out2,out3,out4:out std_logic_vector(3 downto 0); xuanze,xianshi:out std_logic_vector(7 downto 0)); end szz
architecture one of szz is signal m,t1:std_logic;
signal hh1,hh2,ss1,ss2,A:std_logic_vector( 3 downto 0); signal sel:std_logic_vector( 2 downto 0); signal t2:std_logic_vector ( 11 downto 0); signal f,count1:std_logic_vector(1 downto 0); begin
----------------------------------------------分频模块pinlv
p1:process(clk); --进程p1
variable count1:integer range 0 to 49999999; begin
if(clk'event and clk='1')then count1:=count1+1;--在clk 的上升沿计数 if count1<=24999999 then clk1s<='0'; elsif count1<=49999999 then clk1s<='1'; else count1:=0;--产生周期为1s的时钟信号 clk500ms<='0';
elsif count3<=24999999 then clk500ms<='1'; else count3:=0;--产生周期为500ms的时钟信号 end if;
19
共分享92篇相关文档