1、3.分频率器:用来产生100Hz计时脉冲:4.显示译码器:完成对显示的控制。3、硬件要求1.主芯片EPF10K10LC84-42.6位八段扫描共阴极数码显示管3.二个按键开关(归零、启动)4、实验内容及步骤1.根据电路特点,用层次设计概念将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口。分别让学生分作和调试其中之一,然后再将各模块结合起来联试。以培养学生之间的合作精神,同时加深层次化设计概念。2.了解软件的元件管理深层含义,以及模块元件之间的连接该概念,对于不同目录下的同一设计,如何熔合。3.适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同,让学生有更深一步了解。熟悉CP
2、LD设计的调试过程中手段的多样化。4.按适配划分后的管脚定位,同相关功能块硬件电路接口连线。5.所有模块全用VHDL语言描述。五、设 计 原 理 与 技 术 方 法: 包括:电路工作原理分析与原理图、元器件选择与参数计算、电路调试方法与结果说明; 软件设计说明书与流程图、软件源程序代码、软件调试方法与运行结果说明。 (一)设计流程1、设计实验目的:在MAX+plusII软件平台上,熟练运用VHDL语言,完成数字时钟设计的软件编程、编译、综合、仿真,使用EDA实验箱,实现数字秒表的硬件功能。 2、设计原理总体框图:本系统设计采用自顶向下的设计方案,系统的整体组装设计原理框图如图(1)所示,它主要
3、由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块分别完成计时过程的控制功能、计时功能与显示功能。数字秒表设计原理图六、数字秒表各个模块的VHDL语言设计1、时基分频模块将实验箱提供的2.5MHz的时钟脉冲分频后变成100Hz的脉冲,该模块的VHDL设计代码如下:library ieee;use ieee.std_logic_1164.all;entity cb10 is port(clk: in std_logic; co:out std_logic);end cb10; architecture art of cb10 is signal counter:integer ran
4、ge 0 to 24999;begin process(clk) begin if (clk=1 and clkevent) then if counter=12499 then counter=0; else counter=counter+1; end if; end process;process(counter) if counter=24999 then co=; else co0end art;2、 十进制计数器模块 use ieee.std_logic_unsigned.all;entity TEN is port(clk,clr,en:in std_logic; Y:out s
5、td_logic_vector(3 downto 0);end entity TEN;architecture art of TEN is signal count10:std_logic_vector(3 downto 0); Y=count10;process(clk,clr,en) if clr= then count10=0000elsif (clkevent and clk=)then if (en=if count10=1001then count10coelse count10=count10+ coend if;end process;3、六进制计数器模块 use ieee.s
6、td_logic_1164.all;use ieee.std_logic_arith.all;entity count6 is Port ( clr,start,clk: cout:out std_logic; daout:buffer std_logic_vector(3 downto 0); end count6; architecture behave of count6 is process(clr,start,clk) then daoutelsif ( clk) then if start= then if daout=0101coutelse daout=daout+1;end
7、behave;4.报警器代码:当记时到一小时时,报警器报警,并响十声。entity alarm1 isport(clk, I: q:end alarm1;ARCHITECTURE a OF alarm1 IS signal n:integer range 0 TO 20; signal q0 :std_logic;beginprocess(clk) begin if(clk=and clkevent) then if i= then q0 n elsif (n=19 and i=not q0;=n+1; elseq=q0;END a;5.数据选择和数码管选择模块代码:其功能是选择个计数端口来的
8、数据,当相应的数据到来时数据选择器选择器数据后输出给数码管,并由数码管显示。USE ieee.std_logic_UNSIGNED.all;entity seltime is port(clr,clk: in bit; dain0,dain1,dain2,dain3,dain4,dain5: in std_logic_vector(3 downto 0); sel: out std_logic_vector(2 downto 0); out std_logic_vector(3 downto 0);end seltime;architecture a of seltime is signal
9、temp:integer range 0 to 5; process(clk) if (clr=) then daout sel000 temp elsif (clk= if temp=5 then temp else tempseldaout001=dain1; when 2=010=dain2; when 3=011=dain3; when 4=100=dain4; when 5=101=dain5; end case;end a;6.数码管驱动模块代码:数码管驱动电路,驱动数码管发光。entity deled is port(num:in std_logic_vector(3 downt
10、o 0); led:out std_logic_vector(6 downto 0);end deled ;architecture a of deled is process(num) case num is when=led0000000-00H七、实验连线A)输入接口1.秒表的归零,启动信号RESET、START的管脚分别连接按键开关。2.蜂鸣器鸣响信号SPEAKER接蜂鸣器的输入。3.秒表计数时钟信号CLK的管脚同2.5MHz时钟源相连。B)输出接口 秒表扫描显示的驱动信号管脚SEL2,SEL1,SEL0和AG参照设计一中的连法。八、实验总结开始做设计时总是会犯一些错误,只有经过不停的
11、改错不停的编译得到正确的程序说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块的进行调就可以了,充分体现了结构化编程的优势。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1