华信学院数字逻辑课程设计报告

时间:2024.4.2

石家庄经济学院

华信学院

数字逻辑课程设计报告

        数字秒表   

                   

                   

                     

指导老师              

                   

20##年6月

目      录

1.  课程设计目的·······················································································

2.  开发工具选择·······················································································

3.  设计方案 ···························································································

4模块描述····························································································

5.  VHDL实现··························································································

6. 调试仿真······························································································

7. 课程设计回顾总结  ···············································································

献 ····························································································

附录 ······································································································

1课程设计目的

(1)      设计一个数字秒表,计时范围是0秒----59分59.9秒。

(2)      复位开关可在任何情况下使用,只要按一下复位开关,计时器就清零,并做好下次计时的准备。

(3)    具有启/停开关,按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。

2开发工具选择

(1)         硬件描述语言

数字秒表的设计采用了功能强大的VHDL语言,它具有很强的行为能力描述,设计方法灵活,可以支持库和模块设计方法。    

(2)        QuartusII软见开发工具   

   本设计采用的软见开发工具是美国的Altera公司的QuartusII,它支持多种设计输入方法,包括原理图输入、文本输入。   

(3)       EDA实验开发系统    

  本设计采用的EDA实验开发系统,主要用于提供可编程逻辑器件的下载电路及EDA实验开发的外围资源,供硬件验证用。

3设计方案

本课题所设计的数字秒表,使用模块设计的思想,设置一个控制器模块,然后进行选择,若按一次启/停开关时,则进入计时模块,数字秒表开始计时,此时译码模块将时钟信号转化为七段字形码,而显示模块则将计时的0.1秒、秒个位、秒十位、分个位、分十位信号实时显示出来。

 流程图如下:

                                

4模块描述

(1)    模块一:控制器

包括复位开关和启/停开关。复位开关可在任何情况下使用,只要按一下复位开关,计时器就清零,并做好下次计时的准备;按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。

(2)    模块二:计时

  按下启/停开关后,根据时钟开始计时,计时范围是0秒----59分59.9秒,秒表的计时时钟信号,时钟周期为0.1s。仿真中用10ns模拟0.1s,避免仿真时间过长,省去分频电路,计时模块由三个十进制计数器和两个六进制计数器构成,用十进制计数器表示0.1秒和秒个位、分个位,用六进制计数器表示秒十位和分十位。

(3)    模块三显示:

将时钟信号转化成七段字形码,共包含7个共阴极的led数码管,阴级接低电平,每个数码管的a---g输入来自一个bcd-七段字形译码器的输出,因此,共需要7个bcd-七段字形译器,分别显示0.1秒、分隔符、秒个位、秒十位、分隔符、分个位、分十位。

模块图如下:

5 VHDL实现

(1)计时模块六进制:

LIBRARY  IEEE;                                    

USE IEEE.STD_LOGIC_1164.ALL;                        

USE IEEE.STD_LOGIC_UNSIGNED.ALL; 

ENTITY liujinzhi IS                                       

PORT(CLK,reset,EN:IN STD_LOGIC;                       

CN:        OUT STD_LOGIC;                      

COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END liujinzhi; 

ARCHITECTURE ART OF liujinzhi IS                         

SIGNAL SCOUNT6: STD_LOGIC_VECTOR(3 DOWNTO 0);     

BEGIN                                           

COUNT6<=SCOUNT6;

      PROCESS(CLK,reset,EN)

          BEGIN 

            IF(reset='1')THEN 

               SCOUNT6<="0000";CN<='0';

            ELSIF RISING_EDGE(CLK)THEN

               IF(EN='1')THEN 

                  IF SCOUNT6="0101"THEN 

                      SCOUNT6<="0000";CN<='1';

                  ELSE 

                      SCOUNT6<=SCOUNT6+'1';CN<='0';

                  END IF;

              END IF;

          END IF;

     END PROCESS;

END ART;

(2)计时模块十进制:

LIBRARY  IEEE;                                     

USE IEEE.STD_LOGIC_1164.ALL;                       

USE IEEE.STD_LOGIC_UNSIGNED.ALL; 

ENTITY  shijinzhi  IS                                  

 PORT(CLK:    IN STD_LOGIC;                        

       reset: IN STD_LOGIC;

       EN:     IN STD_LOGIC;    

       CN:     OUT STD_LOGIC;                   

       COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END shijinzhi; 

ARCHITECTURE ART OF shijinzhi IS                        

SIGNAL SCOUNT10: STD_LOGIC_VECTOR(3 DOWNTO 0);   

    BEGIN

COUNT10<=SCOUNT10;

      PROCESS(CLK,reset,EN)

          BEGIN 

            IF(reset='1')THEN 

               SCOUNT10<="0000";CN<='0';

            ELSIF RISING_EDGE(CLK)THEN

               IF(EN='1')THEN 

                  IF SCOUNT10="1001"THEN

                      CN<='1'; 

                      SCOUNT10<="0000";

                  ELSE 

                      CN<='0'; 

                      SCOUNT10<=SCOUNT10+'1';

                  END IF;

              END IF;

          END IF;

     END PROCESS;

END ART;

(3)译码七段译码器:

library ieee;

use ieee.std_logic_1164.all;

entity display_7448 is

port(

lt:in std_logic;

bi:in std_logic;

rbi:in std_logic;

rbo:out std_logic;

a:in std_logic_vector(3 downto 0);

segout:out std_logic_vector(6 downto 0));

end display_7448;

architecture display_7448p of display_7448 is

begin

process(lt,bi,a)

begin

if(lt='1' and bi='1' and rbi='1' and a="0000")then

segout<="1111110";rbo<='1';

elsif(lt='1' and bi='1' and a="0001")then

segout<="0110000";rbo<='1';

elsif(lt='1' and bi='1' and a="0010")then

segout<="1101101";rbo<='1';

elsif(lt='1' and bi='1' and a="0011")then

segout<="1111001";rbo<='1';

elsif(lt='1' and bi='1' and a="0100")then

segout<="0110011";rbo<='1';

elsif(lt='1' and bi='1' and a="0101")then

segout<="1011011";rbo<='1';

elsif(lt='1' and bi='1' and a="0110")then

segout<="0011111";rbo<='1';

elsif(lt='1' and bi='1' and a="0111")then

segout<="1110000";rbo<='1';

elsif(lt='1' and bi='1' and a="1000")then

segout<="1111111";rbo<='1';

elsif(lt='1' and bi='1' and a="1001")then

segout<="1110011";rbo<='1';

elsif bi='0' then

segout<="0000000";

rbo<='0';

elsif(lt='0' and bi='1')then

segout<="1111111";

rbo<='1';

end if;

end process;

end display_7448p;

附录:顶层原件原理图设计shuzimiaobiao\miaobiao.bdf

6调试仿真

1六进制:

                        1 六进制计数器仿真图

如图所示,秒表计时开始,用周期为10ns的时钟信号clk模拟0.1s的时钟clk,可见,每来一个clk,COUNT6加1,当加到0101(6)时,再来一个clk,COUNT再次从0开始计数,CN代表进位,EN为启/停键,秒表计时过程中,按下启/停键使EN=0,计时停止,再按下启/停键使EN=1,计时继续。reset为复位键,当reset=1时,秒表计时清零。

2十进制:

                        2 十进制计数器仿真图

如图所示,秒表计时开始,用周期为10ns的时钟信号clk模拟0.1s的时钟clk,可见,每来一个clk,COUNT10加1,当加到1001(9)时,再来一个clk,COUNT再次从0开始计数,CN代表进位,EN为启/停键,秒表计时过程中,按下启/停键使EN=0,计时停止;再按下启/停键使EN=1,计时继续。reset为复位键,当reset=1时,秒表计时清零。

3七段字形译码器:

3七段字形译码器仿真图

如图所示,输出信号segouta_g为输入信号a所对应的七段字形码。

4数字秒表:

     4 数字秒表仿真图

如图所示,s1-s7分别显示0.1秒、分隔符、秒个位、秒十位、分隔符、分个位、分十位。秒个位及分个位为十进制,秒十位及分十位为六进制。EN为启/停键,秒表计时过程中,按下启/停键使EN=0,计时停止,再按下启/停键使EN=1,计时继续。reset为复位键,当reset=1时,秒表计时清零。由上述仿真图可知,该数字秒表达到了设计要求。

7课程设计回顾总结

VHDL语言是一种很有用的硬件描述语言,通过两周的学习与实践终于基本实现了老师要求的设计,通过自己动手实践和同学们的交流,研究完成了一次设计,掌握了设计应有的基本流程,很开心,也使我对EDA课程VHDL语言有了更深刻的了解,同时也增加了我的兴趣。通过仿真分析可以看出,该数字秒表达到了设计要求。本课题提出的数字秒表采用模块化设计方法,底层的元件使用硬件描述语言 VHDL进行描述,顶层采用原理图的方法。依靠计算机,借助EDA开发工具,实现系统功能。

数字秒表的计时范围是0秒----59分59.9秒,复位开关可在任何情况下使用,只要按一下复位开关,计时器就清零,并做好下次计时的准备;具有启/停开关,按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。操作比较方便。总之该数字秒表具有较好的应用前景。                               

参考文献

【1】《数字逻辑原理与VHDL设计》

【2】《逻辑与数字系统设计》


第二篇:20xx年数字逻辑课程设计报告


石家庄经济学院

信息工程学院

数字逻辑课程设计报告

       数字锁的设计 

           

       

         

指导老师      

                    

20##年6月

目      录

1.  功能描述··························································································· 3

2.  开发工具选择····················································································· 3

3.  设计方案 ·························································································· 3

4模块描述·························································································· 4

5.  VHDL实现························································································· 5

6. 调试仿真··························································································· 13

7. 课程设计回顾总结  ············································································ 15

献 ························································································· 15

附录 ··································································································· 15

一.        功能描述

数字锁即电子密码锁,锁内有若干密码,所用密码可由用户自己选定。如果输入代码与锁内密码一致,锁被打开;否则,应封闭开锁电路,并发出警告信号。

设计的八位并行数码锁

(1)  开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯LT。否则,系统进行错误状态,并发出警报信号。

(2)  开锁程序由设计者确定,并要求锁内给定的密码是可调的,且预置方便,保密性好。

(3)  数字锁的报警方式是点亮指示灯LF,并使喇叭鸣叫来报警,直到按下复位开关,警报才停止。此时,数字锁又自动进入等待下一次开锁的状态。

二.开发工具选择

   (1)硬件描述语言

电子密码锁的设计采用了功能强大的VHDL语言,它具有很强的行为能力描述,设计方法灵活,可以支持库和模块设计方法。

   (2)QuartusII软见开发工具

      本设计采用的软见开发工具是美国的Altera公司的QuartusII,它支持多种设计输入方法,包括原理图输入、文本输入。

   (3)EDA实验开发系统

      本设计采用的EDA实验开发系统,主要用于提供可编程逻辑器件的下载电路及EDA实验开发的外围资源,供硬件验证用。

三.设计方案

 本文所设计的电子密码锁,使用模块设计的思想:开始输入八位密码数字,然后进行选择,若选择开关S=0时,进行改密码并存入寄存器中;S-1时,进行开锁。若开锁成功,灯LT=1,开锁失败,灯LF=1且喇叭LB=1进行鸣笛。

流程图如下:

            

四.模块描述

1.模块一:简单选择

 输入密码后,进行选择,S=0就改密码,S=1就进行下一步开锁。

2.模块二:寄存器

 若进行改密码,则所改密码存入寄存器等待下一次比较;若进行开锁,则输出存在寄存器中原有的密码。

3.模块三:比较器

 若寄存器中存入的密码与进行开锁比较的密码相等,则开锁成功,指示灯LT=1;否则开锁失败,指示灯LF=1,喇叭LB=1进行鸣笛。

4.模块四:复位

开锁成功指示灯LT亮,按下复位键CLK=0,灯灭返回待选择状态。

5.模块五:复位与门

开锁失败指示灯LF亮,按下复位CLK=0,灯灭返回。

6.模块六:与门

开锁失败喇叭LB鸣笛,按下复位CLK=0,停止鸣笛。

五:VHDL实现

1.模块一:简单选择

library ieee;

use ieee.std_logic_1164.all;

entity add is

port(D:in std_logic_vector(7 downto 0);

  EN:in std_logic;

 Z0:out std_logic_vector(7 downto 0);

Z1:out std_logic_vector(7 downto 0));

end ;

architecture one of add is

 begin

process(D,EN)

 begin

  if EN='0' then

    Z0<=D;

    Z1<=D;

  END IF;

end process;

end one;

3.模块二:寄存器

library ieee;

use ieee.std_logic_1164.all;

entity REG8B is

 port(CLK: in std_logic;

   S:in std_logic;

   D:in std_logic_vector(7 downto 0);

   Q:out std_logic_vector(7 downto 0));

end;

architecture ONE of REG8B is

signal M: std_logic_vector(7 downto 0):="00000000";

begin

 process(S,CLK)

 begin

 if CLK'event and CLK='1' then

    case S is

    when '1' => Q<=M;

    WHEN OTHERS =>M<=D;

    end case;           

 end if;

 Q<=M;

end process;

end;

4.模块三:比较器

library ieee;

use ieee.std_logic_1164.all;

entity compare is

 port(S:in std_logic;

   D1:in std_logic_vector(7 downto 0);

   D2:in std_logic_vector(7 downto 0);

   LT:out std_logic;

   LF:out std_logic;

   LB:out std_logic);

end;

architecture ONE of compare is

 begin

  process(S,D1)

  begin

  if S='0' then

     LF<='0';

      LB<='0';

      LT<='0';

   elsif( D1=D2) then

      LT<='1';

     LF<='0';

      LB<='0';

    else

      LF<='1';

      LB<='1';

      LT<='0';

    end if;

  end process;

end;

5.模块四:复位

library ieee;

 use ieee.std_logic_1164.all;

entity return1 is

port(a0,a1:in std_logic;

 z0,z1:out std_logic);

end return1;

architecture one of return1 is

 begin

z0<= a0 and a1;

z1<= a0 and a1;

end;

6.模块五:复位与门

library ieee;

use ieee.std_logic_1164.all;

entity yu2 is

port(a0,a1:in std_logic;

 Z0:out std_logic);

end yu2;

architecture behave of yu2 is

 begin

z0<=a0 and a1;

end behave;

7.模块六:与门

library ieee;

use ieee.std_logic_1164.all;

entity yu2 is

port(a0,a1:in std_logic;

 Z0:out std_logic);

end yu2;

architecture behave of yu2 is

 begin

z0<=a0 and a1;

end behave;

组合成总的VHDL语言实现:

library ieee;

use ieee.std_logic_1164.all;

entity numberlock is

 port(D:in std_logic_vector(7 downto 0);

   CLR:in std_logic;  --复位

   CLK:in std_logic;  --时钟信号

   S:in std_logic;    --选择信号

   EN:in std_logic;

   LT:out std_logic;  --开锁

   LF:out std_logic;  --警报

   LB:out std_logic); --警报

end;

architecture one of numberlock is

component REG8B                      --寄存器

port(CLK: in std_logic;

   S:in std_logic;

   D:in std_logic_vector(7 downto 0);

   Q:out std_logic_vector(7 downto 0));

end component;

component compare                      --比较器

port(S:in std_logic;

   D1:in std_logic_vector(7 downto 0);

   D2:in std_logic_vector(7 downto 0);

   LT:out std_logic;

   LF:out std_logic;

   LB:out std_logic);

end component;

component yu2                      --定义2输入与门

port(a0,a1:in  std_logic;

     Z0:out std_logic);

end component;

component add                      --定义

port(D:in std_logic_vector(7 downto 0);

  EN:in std_logic;

  Z0:out std_logic_vector(7 downto 0);

  Z1:out std_logic_vector(7 downto 0));

end component;

component return1                     --定义

port(a0,a1:in std_logic;

 z0,z1:out std_logic);

end component;

signal temp1,temp2,temp3:std_logic_vector(7 downto 0);

signal temp4,temp5,temp6,temp7:std_logic;

begin

U1:add port map(D=>D,EN=>temp7,Z0=>temp1,Z1=>temp2);

U2:REG8B port map(S=>S,D=>temp1,CLK=>CLK,Q=>temp3); 

U3:compare port map(S=>S,D1=>temp3,D2=>temp2,LT=>temp4,LF=>temp5,LB=>temp6); 

U4:return1 port map(a0=>CLR,a1=>temp4,Z0=>LT,Z1=>temp7);

U5:yu2 port map(a0=>CLR,a1=>temp5,Z0=>LF);

U6:yu2 port map(a0=>CLR,a1=>temp6,Z0=>LB);

end;

六.调试仿真:

调试成功波形图如下:

1.

说明:上升沿有效,输入密码为00000000时,S选1进行开锁,开锁成功输出LT=1。

2.

说明:上升沿有效,输入密码01100000,选择S=0进行修改密码。

3.

说明:上升沿有效,输入修改后的密码01100000,选择开锁,开锁成功LT=1.

4.

说明:输入密码00001100进行开锁,00001100不等于01100000,开锁失败LF=1,LB=1。

5.

说明:开锁成功后进行复位,成功。

数据流描述显示图如下:

七.课程设计回顾总结:

这次的设计密码锁,从一开始的一点思路都没有,之后慢慢琢磨有了具体思路,还有老师的指导,进行了分模块的设计方案,逐个模块的进行编写调试,最终综合在一块,完成了整个的设计方案。通过这次课程设计,我更加清楚了如何从实物中进行研究来实现设计,更灵活的掌握了VHDL语言的编写与实现。

参考文献

 《数字逻辑原理与VHDL设计》

更多相关推荐:
数字逻辑课程设计报告

数字逻辑课程设计多功能数字钟班级学号课程设计人指导老师课题完成时间一设计目的学会应用数字系统设计方法进行电路设计熟练地运用汇编语言二设计任务及要求1记时记分记秒2校时校分秒清03整点报时4时间正常显示5闹时功能...

数字逻辑课程设计报告

东莞理工学院07级计算机专业本科数字逻辑课程课程设计报告班级07计科1班姓名沈美珠学号20xx41402102同组成员黄浪指导老师肖慧娟日期20xx1231一课程设计名称六路抢答器的设计二课程设计地点电子工程学...

数 字 电 路 课 程 设 计 报 告

数字电路课程设计报告课题名称:篮球竞赛30秒计时器姓名:学号:专业班级:通信工程1指导教师:设计日期:20##年1月5日摘要:随着信息时代的到来,电子技术在社会生活中发挥着越来越重要的作用,运用模电和数电知识设…

广工数字逻辑课程设计报告

20xx年6月23日广东工业大学课程设计任务书一课程设计的内容完成彩灯循环控制器的设计任务二课程设计的要求与数据设计要求包括110路彩灯分别用10个发光二极管L0L1L9模拟2要求显示四种不同的花型110路彩灯...

数电课程设计报告

数电课程设计说明题目数字电子钟的设计部班级名号书系专业姓学指导教师起止日期摘要这次课程设计采用的课题是数字电子钟的设计数字钟是一种用数字电路技术实现时分秒计时的装置与机械式始终相比具有更高的准确性和直观性且无机...

江苏大学09级数字逻辑课程设计报告

数字逻辑课程设计多功能数字钟学院名称计算机科学与通信工程专业班级通信0902学生学号指导老师赵念强完成日期20xx年7月2日多功能数字钟课程设计实验报告一实验目的1学会应用数字系统设计方法进行电路设计2进一步提...

数字逻辑系统课程设计报告 (1)

数字逻辑系统课程设计报告课题电子密码锁专业电子信息工程技术班级B1311学号21311060104姓名李文翔设计时间20xx年3月23日27日评定成绩指导教师目录一设计内容与要求1设计内容2设计要求二方案设计1...

简易售货机的设计 数字逻辑课程设计报告

石家庄经济学院华信学院数字逻辑课程设计报告题目简易售货机的设计姓名学号班号指导老师成绩目录1课程设计目的2开发工具选择3设计方案4模块描述5VHDL实现6调试仿真7课程设计回顾总结参考文献附录1课程设计目的1设...

数字逻辑课程设计报告-电子钟

数字逻辑电路课程设计报告数字逻辑课程设计报告-----多功能数字钟的实现一.设计目的:1.学会应用数字系统设计方法进行电路设计。2.进一步提高MaxplusII软件开发应用能力。3.培养学生综合实验能力。二.实…

数字逻辑程序设计报告

北京邮电大学课程设计报告目录1频率计设计2电子钟显示设计3药片装瓶系统设计4任务日志以及个人心得一实验目的1掌握较复杂的逻辑设计和测试2学习用原理图VHDL语言设计逻辑电路3学习数字电路模块层次设计4掌握isp...

《数字逻辑》数字时钟课程设计报告

数字逻辑课程设计报告题目学院部专业班级学生姓名学号月共指导教师签字题目一摘要钟表的数字化给人们的生产生活带来了极大的方便并且极大的扩展了钟表原先的报时功能诸如定时自动报有这些都是以钟表数字化为基础的因此研究数字...

数字电路课程设计报告

摘要数字电路八路花样灯控制电路是利用数字逻辑电子元件连接而成具有8个受控制的输出端通过输出8个有规律的信号以达到控制8个LED灯的目的选择不同的芯片和不同的连接方式都会产生不同的控制信号并产生不同的花样灯本次课...

数字逻辑课程设计报告(31篇)