EDA报告吴广岭_第1页
EDA报告吴广岭_第2页
EDA报告吴广岭_第3页
EDA报告吴广岭_第4页
EDA报告吴广岭_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、合肥学院eda技术课程设计报告课程名称 在系统编程技术 设计题目 数字钟的设计 班级 11级电子(1)班 姓名 吴广岭 学号 1105011030 日期 2013.12.28 摘要:随着eda技术的发展和应用领域的扩大,eda技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。同时,随着技术市场与人才市场对eda技术需求的不断提高,产品的市场效率和技术要求也必然会反映到教学和科研领域中来。eda技术在电子系统设计领域越来越普及,本设计主要利用vhdl语言在eda平台上设计一个电子数字钟,它的计时周期为24小时,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。总的程序

2、由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。并且使用quartus  ii软件进行电路波形仿真,下载到eda实验箱进行验证。关键词:eda vhdl语言 数字钟一、设计目的1、熟练地运用数字系统的设计方法进行数字系统设计;2、能进行较复杂的数字系统设计;3、按要求设计一个数字钟。二、设计内容1、要求显示秒、分、时,显示格式如下:显示格式2、可清零、可调时,具有整点报时和闹钟功能。三、设计原理1、数字钟的基本工作原理:数字钟以其显示时间的直观性、走时准确性作为一种计时

3、工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。数字钟的基本原理方框图如下:数字时钟控制单元时调整分调整使能端信号clk信号时显示分显示秒显示24进制60进制60进制led显示整点报时花样显示数字钟实现原理框图1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;其中秒、分采用60进制计数,即从0到59循环计数,时钟采用24进制计数,即从0到23循环计数,数值显示在数码管上。2)时间设置:手动调节时、分,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4分别对时、分进行调整,因为我们用的时钟信号均是1hz的,所以每

4、led灯变化一次就来一个脉冲,即计数一次。3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答”的报警声音。5)led灯在时钟显示时有花样显示信号产生。即根据进位情况,led不停的闪烁,从而产生“花样”信号。根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用vhdl语言设计,顶层文件用原理图的设计方法。小时采用24进制,而分钟均是60进制,而60进制计数器可采用

5、6进制和10进制计数器构成。2、数字钟设计的电路原理图 24进制数字钟的电路图3、实验源程序1、秒library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport( clk,reset,setmin:std_logic; enmin:out std_logic; daout:out std_logic_vector(6 downto 0);end entity second;architecture fun of second issignal count:std_logi

6、c_vector(6 downto 0);signal enmin_1,enmin_2:std_logic; -enmin_1为59秒时的进位信号 begin -enmin_2由clk调制后的手动调分脉冲信号串 daout<=count; enmin_2<=(setmin and clk); -setmin为手动调分控制信号,高电平有效 enmin<=(enmin_1 or enmin_2); -enmin为向分进位信号 process(clk,reset,setmin) begin if(reset='0')then count<="0000

7、000" -若reset为0,则异步清零 elsif(clk 'event and clk='1')then -否则,若clk上升沿到 if(count(3 downto 0)="1001")then -若个位计时恰好到"1001"即9 if(count<16#60#)then -又若count小于16#60#,即60h if(count="1011001")then -又若已到59d enmin_1<='1'count<="0000000"-则置

8、进位为1及count复0 else -未到59d count<=count+7; -则加7,而+7=+1+6,即作"加6校正" end if; else -若count不小于16#60#(即count等于或大于16#60#) count<="0000000" -count复0 end if; -end if(count<16#60#) elsif(count<16#60#)then -若个位计数未到"1001"则转此句再判 count<=count+1; -若count<16#60#则count加1

9、 enmin_1<='0'after 100 ns; -没有发生进位 else -否则,若count不小于16#60# count<="0000000" -则count复0 end if; -end if(count(3 downto 0)="1001") end if; -end if(reset='0')end process;end fun;2、分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity

10、minute is port(clk,clk1,reset,sethour:in std_logic; enhour:out std_logic; daout:out std_logic_vector(6 downto 0);end entity minute ;architecture fun of minute is signal count :std_logic_vector (6 downto 0); signal enhour_1, enhour_2: std_logic; -enmin_1为59分时的进位信号 begin -enmin_2由clk调制后的手动调时脉冲信号串 daou

11、t<=count; enhour_2<= (sethour and clk1); -sethour为手动调时控制信号,高电平有效 enhour<= (enhour_1 or enhour_2); process(clk,reset,sethour) begin if(reset='0') then -若reset为0,则异步清零 count<="0000000" elsif(clk'event and clk='1')then -否则,若clk上升沿到 if(count (3 downto 0) ="

12、1001")then-若个位计时恰好到"1001"即9 if(count <16#60#) then -又若count小于16#60#,即60 if(count="1011001") then-又若已到59d enhour_1<='1' -则置进位为1 count<="0000000" -count复0 else count<=count+7; -若count未到59d,则加7,即作"加6校正" end if; -使前面的16#60#的个位转变为8421bcd的容量

13、 else count<="0000000"-count复0(有此句,则对无效状态电路可自启动) end if; -end if(count<16#60#) elsif (count <16#60#) then count<=count+1; -若count<16#60#则count加1 enhour_1<='0' after 100 ns; -没有发生进位 else count<="0000000" -否则,若count不小于16#60# count复0 end if; -end if(coun

14、t(3 downto 0)="1001") end if; -end if(reset='0') end process;end fun;3、时library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk,reset:in std_logic; daout:out std_logic_vector(5 downto 0);end entity hour;architecture fun of hour issignal coun

15、t:std_logic_vector(5 downto 0); begin daout<=count; process(clk,reset) begin if(reset='0')then count<="000000" -若reset=0,则异步清零 elsif(clk'event and clk='1')then -否则,若clk上升沿到 if(count(3 downto 0)="1001")then -若个位计时恰好到"1001"即9 if(count<16#23#)t

16、hen -23进制 count<=count+7; -若到23d则 else count<="000000" -复0 end if; elsif (count<16#23#)then -若未到23d,则count进1 count<=count+1; else -否则清零 count<="000000" end if; -end if(count(3 downto 0)="1001") end if; -end if(reset='0') end process;end fun; 4、主程序

17、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert is port(clk:in std_logic; dain:in std_logic_vector(6 downto 0); speak:out std_logic; lamp:out std_logic_vector(2 downto 0);end alert;architecture fun of alert is signal count:std_logic_vector(1 downto 0); signal co

18、unt1:std_logic_vector(1 downto 0); begin speaker:process(clk) begin -speak<=count1(1); if(clk'event and clk='1')then if(dain="0000000")then speak<=count1(1); if(count1>="10")then count1<="00"-count1为三进制加法计数器 else count1<=count1+1; end if ; end

19、 if ; end if ; end process speaker; lamper:process(clk) begin if(rising_edge(clk)then if(count<="10")then if(count="00")then lamp<="001"-循环点亮三只灯 elsif(count="01")then lamp<="010" elsif(count="10")then lamp<="100" end i

20、f; count<=count+1; else count<="00" end if; end if; end process lamper;end fun;四、设计仪器、设备pc机一台、gw48教学实验系统一台、下载电缆一根(已接好)五、设计步骤1、用vhdl程序设计步骤1:为本项设计建立文件夹任何一项设计都是一项工程,都必须首先为此工程建立一个放置与此工程相关的所有的文件夹,在此文件夹被eda软件默认为工作库。一个设计项目可以包含多个设计文件,一般不同的设计项目最好放在不同的文件夹中。注意:文件名不能使用中文,且不能带空格。步骤2:输入设计项目和存盘1) 打

21、开quartus|,单击“file”菜单,将鼠标移到new project wizard 选项单击则显示如下图内容,在其中输入项目名和实体名,项目名和实体必须保持一致,最后点击finish完成(如果文件夹不存在,系统会提示用户,确认后系统会自动建立该文件夹)。 建立 new project2) 在工具栏中,选择filenew,选择原理图编辑器,在这里我们建立vhdl文件,点击ok则显示下图情况,可以在里面键入本实验程序,如下图。步骤3:选择目标器件并编译1)在assign选项的下拉菜单中选择器件选择项device,如图所示。在device family(器件序列栏)中选定目标器件对应的序列名,

22、ep1c6对应的是cyclone系列。在availbale devices里选择ep1c6q240c8,为了选择器件,有时应将此栏下方标有show only fastest speed grades的勾消去,以便显示出所有速度级别的器件。完成器件选择后,按ok键。(注意:所选器件必须与目标板的器件型号完全一致。)选择目标板器件型号3) 输入完程序以后,单击水平工具条上的紫色的三角符号“”,此时开始编译程序,程序编译完毕后,如果出现错误,需及时改正。步骤4:时序仿真1)建立波形文件:选择file->new,出现图示屏幕,选择vector waveform file,单击ok。建立波形文件2

23、)双击name下方的空白处,弹出insert nod or bus对话框。如图:选择添加结点设置3)单击对话框右侧中间的node finder···。在filter中选择pins:all,单击list,而后,单击<<,即可把所有输入/输出都拷贝到右边的一侧,这正是我们希望的各个引脚。如图: 选择结点4)设定仿真时间宽度。选择edit->end time···选项,在end time选择窗中选择适当的仿真时间域,如可选10微秒,以便有足够长的观察时间。5)加上输入信号后波形文件存盘。选择file->save as

24、选项,因为存盘窗中的波形文件名是默认的,所以直接存盘即可。6)仿真器参数设置并运行。选择菜单assignment中的settings项,在settings窗口下选择category->simulator settings项,单击ok。然后在processing菜单下选择startsimulation项,直到simulator was successful出现,仿真结束。完成波形如图所示。步骤5:引脚锁定选择assign®pinlocationchip,在跳出的窗口中的node name栏中用键盘输入半加器的端口名,步骤5:引脚锁定选择assign®pinlocationchip,在跳出的窗口中的node name栏中用键盘输入半加器的端口名,如a、b等。如果输入的端口名正确,在右侧的pin type栏将显示该信号的属性。输入以后如下图,设定完成以后再运行一次程序。 引脚锁定步骤6:编程下载1)首先将下载线把计算机的打印机口与目标板(如开发板或实验板)连接好,打开电源。2)下载方式设定。选择max+plusii®programmer选项,跳出下图左侧所示的编程器窗口,然后选择options®hardware setu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论