专业:自动化。
班级学号:5090431姓名:
2023年6月15日。
数字秒表设计实验任务书。
一、设计实验目的:
在max+plusii软件平台上,熟练运用vhdl语言,完成数字时钟设计的软件编程、编译、综合、**,使用eda实验箱,实现数字秒表的硬件功能。二、设计实验说明及要求:
1、数字秒表主要由:分频器、扫描显示译码器、一百进制计数器、六十进制计数器(或十进制计数器与6进制计数器)、十二进制计数器(或二十**制计数器)电路组成。在整个秒表中最关键的是如何获得一个精确的100hz计时脉冲,除此之外,数字秒表需有清零控制端,以及启动控制端、保持保持,以便数字时钟能随意停止及启动。
2、数字秒表显示由时(12或24进制任选)、分(60进制)、秒(60进制)、百分之一秒(一百进制)组成,利用扫描显示译码电路在八个数码管显示。
3、能够完成清零、启动、保持(可以使用键盘或拨码开关置数)功能。4、时、分、秒、百分之一秒显示准确。三、数字时钟组成及功能:
1、分频率器:用来产生100hz计时脉冲;2、十二或二十**制计数器:对时进行计数3、六十进制计数器:对分和秒进行计数;
4、六进制计数器:分别对秒十位和分十位进行计数;5、十进制计数器:分别对秒个位和分个位进行计数;6、扫描显示译码器:完成对7字段数码管显示的控制;四、系统硬件要求:
1、时钟信号为10mhz;
2、fpga芯片型号epm7128lc84—15、ep1k30tc144—3或ep1k100qc208—3(根据实验箱上fpga芯片具体选择);
个7段扫描共阴级数码显示管;4、按键开关(清零、启动、保持);五、设计内容及步骤:
1、根据电路持点,用层次设计概念。将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,同时加深层次化设计概念;
2、软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合;
3、适配划分前后的**内容有何不同概念,**信号对象有何不同,有更深一步了解。熟悉了cpld/fpga设计的调试过程中手段的多样化;
4、按适配划分后的管脚定位,同相关功能块硬件电路接口连线;5、所有模块尽量采用vhdl语言设计。六、硬件实现。
将时序**正确的文件**到实验箱中的epm7128lc84—15、ep1k30tc144—3或ep1k100qc208—3中,通过合适的管脚分配,将相应的管脚连接起来,验证设计是否完成设计要求;
设计过程。一、各模块的原理及其程序2.1分频模块。
分频器电路将10mhz的时钟信号来产生100hz的计时脉冲。分频器源程序:
libraryieee;
use counter100000 is
port(clk_in:instd_logic;clk_out:outstd_logic);end counter100000;
architecture b of counter100000 is
signalcountq: std_logic_vector(16downto 0);begin
process(clk_in)begin
if(clk_in'event and clk_in='1') thenif(countq<99999) thencountq<=countq+1;else
countq<=(others=>'0');end if;end if;
end process;process(countq)begin
if(countq<50000)thenclk_out<='0';else
clk_out<='1';end if;
end process;end b;
2.2计数模块。
计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。它是由四个十进制计数器、两个六进制计数器和一个十二进制计数器构成,其中毫秒位采用两个十进制计数器构成一百进制计数器,秒位和分位采用一个十进制和一个六进制计数器构成六十进制计数器,时位采用十二进制计数器。每个计数器。
有清零端、使能端和保持端。十进制计数器源程序:
libraryieee;
use count_10 is
port(count:outstd_logic_vector(3 downto 0);cout:outstd_logic;
cin,rst,clk:instd_logic);end count_10;
architecture beh**ioral ofcount_10 is
signalcounter:std_logic_vector(3 downto 0);begin
process(clk,rst,cin)begin
ifrst='1'then counter<="0000";cout<='0';
elsifclk'event and clk='1' thenifcin='1' then
if counter="1001"then counter<="0000";cout<='1';
else counter<=counter+"0001"; cout<='0';end if;end if;end if;
end process;count<=counter;end beh**ioral;
六进制计数器源程序:
libraryieee;
use count_6 is
port(count:outstd_logic_vector(3 downto 0);cout:outstd_logic; cin,rst,clk:
instd_logic);end count_6;
architecture beh**ioral of count_6 is
signalcounter:std_logic_vector(2 downto 0);begin process(clk,rst)
begin if rst='1'then counter<="000";cout<='0';
elsifclk'event and clk='1' then if cin='1' then if counter="101"then counter<="000";cout<='1';
else counter<=counter+"001"; cout<='0';end if;end if;end if;
end process;
count(2 downto 0)<=counter; count(3)<=0';end beh**ioral;
十二进制计数器源程序:libraryieee;
use entity count_12 isport
en:instd_logic;clr: instd_logic;clk:instd_logic;cout: out std_logic;
s1:buffer std_logic_vector(3 downto 0);s2:buffer std_logic_vector(3 downto 0));end count_12;
architecture beh**e of count_12 isbegin
cout<='1' when(s1="0001" and s2="0001" and en='1')else'0';process(clk,clr)begin
if(clr='1')thens1<="0000";s2<="0000";
elsif(clk'event and clk='1')thenif(en='1')thenif(s1=9)then
s1<="0000";if(s2=1)thens2<="0000";else
s2<=s2+1;end if;else
s1<=s1+1;end if;
if(s2=1 and s1=1) then
s1<="0000";s2<="0000";end if;end if;end if;
end process;end beh**e;
2.3显示模块。
计时显示电路的作用是将计时值在led数码管上显示出来。计时电路产生的值经过bcd七段译码后,驱动led数码管。计时显示电路的实现方案采用扫描显示。
扫描显示译码器源程序:libraryieee;
use isport(clk:instd_logic;sum8:instd_logic_vector(3 downto 0);sum7:
instd_logic_vector(3 downto 0);sum6:instd_logic_vector(3 downto 0);sum5:instd_logic_vector(3 downto 0);sum4:
instd_logic_vector(3 downto 0);sum3:instd_logic_vector(3 downto 0);sum2:instd_logic_vector(3 downto 0);sum1:
instd_logic_vector(3 downto 0);selout:outstd_logic_vector(2 downto 0);segout:outstd_logic_vector(6 downto 0));endseltime;
architecture fun of seltime issignaltemp:std_logic_vector(2 downto 0);signalseg:std_logic_vector(6 downto 0);signalsel:
std_logic_vector(2 downto 0);begin
selout<=sel;segout<=seg;process(clk)
variablenum:std_logic_vector(3 downto 0);beginif (clk'event and clk='1' )then
if temp>="111" thentemp<="000";elsetemp<=temp+1;end if;case temp iswhen "111" =num:=sum8(3 downto 0);sel<="111";when "110" =num:=sum7(3 downto 0);sel<="110";when "101" =num:
=sum6(3 downto 0);sel<="101";when "100" =num:=sum5(3 downto 0);sel<="100";when "011" =num:=sum4(3 downto 0);sel<="011";when "001" =num:
=sum3(3 downto 0);sel<="010";when "000" =num:=sum2(3 downto 0);sel<="001";when others=>num:=sum1(3 downto 0);sel<="000";end case;casenum iswhen"0000"=>seg<="0111111";when"0001"=>seg<="0000110";when"0010"=>seg<="1011011";when"0011"=>seg<="1001111";when"0100"=>seg<="1100110";when"0101"=>seg<="1101101";when"0110"=>seg<="1111101";when"0111"=>seg<="0000111";when"1000"=>seg<="1111111";when"1001"=>seg<="1101111";when others=>seg<="0000000";end case;end if;end process;end fun;
系统**。十进制计数器时序**。
当清零端为0,使能端为1,电路处于由0—9计数的状态,每计十个数有一个进位输出。如图,当清零端为0,使能端为0时,即使有脉冲信号输入,电路处于保持的状态,不进行计数。
六进制计数器时序**。
当清零端为0,使能端为1,电路处于由0—5计数的状态,每计十个数有一个进位输出。如图,当清零端为0,使能端为0时,即使有脉冲信号输入,电路处于保持的状态,不进行计数。
十二进制计数器时序**。
当清零端为0,使能端为1时,电路处于计数的状态。如图,当清零端为0,使能端为0时,即使有脉冲信号输入,电路处于保持的状态,不进行计数。
此十二进制计数器由个位和十位组成,当个位数从0计到9时,向十位进1,再由0计到2时,产生一个进位输出。
扫描显示译码器。
整个时钟秒表的连接图。
结束语。开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译得到正确的程序说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块的进行调就可以了,充分体现了结构化编程的优势。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。
在应用vhdl的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用vhdl硬件描述语言的形式来进行数字系统的设计方便灵活,利用eda软件进行编译优化**极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。
EDA课程设计 数字秒表设计
电子线路cad实验报告。数字秒表设计。学院 理学院 专业 光信息科学与技术。班级 20081461 姓名 苏伟。学号 2008146136 指导教师 吴正平。一 设计任务与要求。1 数字秒表的计时范围是00 00 00 00 23 59 59 99,显示的最长时间 23小时59分59秒99微秒。2 ...
EDA课程设计 数字秒表设计
电子课程设计。数字秒表的设计。数字秒表的设计。一 设计任务与要求。1 数字秒表的计时范围是0秒 59分59.99秒,显示的最长时间为59分59秒。2 数字秒表的计时精度是10ms。3 复位开关可以在任何情况下使用,即便在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备。4 具有启 ...
EDA课程设计 数字秒表的设计
eda课程设计报告。数字秒表的设计。指导老师 时间 组员 一 设计流程。1.文本编辑 用active hdl的编译环境进行编写源 编译通过后,保存为。hdl文件格式。2.功能 将文件调入active hdl 环境里进行功能 检查逻辑功能是否正确。3.逻辑综合与物理实现 将源 调入ise软件中,逻辑综...