Sopc课程设计(论文)数字钟.doc

上传人:仙人指路1688 文档编号:3932294 上传时间:2023-03-28 格式:DOC 页数:26 大小:197KB
返回 下载 相关 举报
Sopc课程设计(论文)数字钟.doc_第1页
第1页 / 共26页
Sopc课程设计(论文)数字钟.doc_第2页
第2页 / 共26页
Sopc课程设计(论文)数字钟.doc_第3页
第3页 / 共26页
Sopc课程设计(论文)数字钟.doc_第4页
第4页 / 共26页
Sopc课程设计(论文)数字钟.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《Sopc课程设计(论文)数字钟.doc》由会员分享,可在线阅读,更多相关《Sopc课程设计(论文)数字钟.doc(26页珍藏版)》请在三一办公上搜索。

1、摘 要 时钟, 自从它发明的那天起,就成为人类的朋友,但随着时间的推移,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。本人设计的产品为24小时制的多功能数字钟,具有时钟时间设置、闹钟时间设置、闹钟开、闹钟关等功能,数字显示小时、分钟、秒,闹钟就绪灯,蜂鸣器。 本论文针对上述情况,在设计中采用EDA自动化设计技术。以计算机为基本平台,以硬件描述语言为系统逻辑描述表达方式,以EDA工具作为开发环境,以大规模可编程逻辑器件为设计载体,以专用集成电路ASIC为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。这样的设

2、计方法,大大的缩短了设计的周期,降低了设计成本。设计出来的数字钟具有功能多、体积小、功耗低的特点。在论文中主要涉及的内容有: 1、 介绍Verilog HDL语言。2、 介绍在QuartusII软件上对数字钟的设计。3、 介绍系统仿真结果和硬件验证与分析。4、 对整个设计系统进行总结。 关键词: 电子设计自动化 Verilog HDL 可编程逻辑器件目 录摘 要I第1章 绪 论3第2章 Verilog HDL语言521 Verilog HDL语言简介522 Verilog HDL主要特点523 Verilog HDL语言开发软件-Quartus6第3章 数字钟Verilog HDL的设计731

3、设计方案及工作原理73.1.1数字钟设计原理73.1.2 数字钟功能732 数字钟钟控定时器的基本组成83.2.1 D触发器的设计83.2.2数据选择器的设计93.2.3 计数器的设计103.2.4 数据分配器123.2.5译码器133.2.6分频器153.2.7闹时器163.2.8 报时器1733 数字钟原理图19第4章 软件调试20结论21参考文献22附录23第1章 绪 论 中国是世界上最早发明计时仪器的国家。有史料记载,汉武帝太初年间(纪元前104-101年)由落下闳创造了我国最早的表示天体运行的仪器浑天仪。东汉时期(公元130年)张衡创造了水运浑天仪,为世界上最早的以水为动力的观测天象

4、的机械计时器,是世界机械天文钟的先驱。盛唐时代,公元725年张遂(又称一行)和梁令瓒等人创制了水运浑天铜仪,它不但能演示天球和日、月的运动,而且立了两个木人,按时击鼓,按时打钟。第一个机械钟的灵魂擒纵器用于计时器,这是中国科学家对人类计时科学的伟大贡献。它比十四世纪欧洲出现的机械钟先行了六个世纪。第一只石英钟出现在二十世纪二十年代,从三十年代开始得到了推广,从六十年代开始,由于应用半导体技术,成功地解决了制造日用石英钟问题,石英电子技术在计时领域得到了广泛的应用。并取代机械钟做了更精确的时间标准。早在1880年,法国人皮埃尔居里和保罗雅克居里就发现了石英晶体有压电的特性,这是制造钟表“心脏”的

5、良好材料。科学家以石英晶体制成的振荡计时器和电子钟组合制成了石英钟。经过测试,一只高精度的石英钟表,每年的误差仅为3-5秒。1942年,著名的英国格林尼治天文台也开始采用了石英钟作为计时工具。在许多场合,它还经常被列为频率的基本标准,用于日常测量与检测。大约在 1970 年前后,石英钟表开始进入市场,风靡全球。随着科学的进步,精密的电子元件不断涌现,石英钟表也开始变得小巧精致,它既是实用品,也是装饰品。它为人们的生活提供方便,更为人们的生活增添了新的色彩。 在现行情况下根据简单实用强的、走时准确进行设计。而实验证明,钟表的振荡部分采用石英晶体作为时基信号源时,走时更精确、调整更方便。钟是一种计

6、时的器具,它的出现开拓了时间计量的新里程。提起时钟大家都很熟悉,它是给我们指明时间的一种计时器,并且我们每天都要用到它。二十世纪八十年代中国的钟表业经历了一场翻天覆地的大转折。其表现在三个方面:(1)从生产机械表转为石英电子表;(2)曾占据中国消费市场四十多年的大型国有企业突然被刚刚冒起的“组业”所取代,钟表生产中心转向中国南方沿海一带; 这场转折以迅雷不及掩耳的速度,冲击着传统的中国钟表工业。中国的钟表业从技术简单、零件少的石英钟机芯制造入手。最初石英钟机芯全靠从日本、德国进口,1989年开始完全自己生产,包括模具的制造加工。近十余年,逐渐提高机芯质量的稳定性,同时转向对手表机芯研制与开发。

7、目前石英钟表机芯生产主要在福建省福州、广东东莞、番禺;机械钟表机芯在上海、山东等地。现在我国的电子业发展非常快速,电子业的发展有利于钟表业的发展。在中国钟表发展史上,国产机芯研制的失败已经成为过去,“组装业”作为新兴钟表工业的起步阶段也已成为过去。一支新的充满智慧的钟表精英在成长。我们相信在科技高速发展的今天,钟表业运用当今材料工业、电子工业和其他领域的最新技术,一定会生产出代表中国科学水平的产品。我们希望钟表业的精英们在提高制造技术水平中不断创新,培育出拥有自主知识产权的品牌。这正是中国钟表业发展的希望。数字钟被广泛用于个人家庭,车站, 码头、办公室等公共场所,成为人们日常生活中的必需品。由

8、于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,运用超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 第2章 Verilog HDL语言21 Verilog HDL语言简介Verilog VHDL(简称Verilog)是一种应用广泛的硬件描述语言,是以文本形式来描述数字系统硬件的结构和行为的语言,可用于从算法级、门

9、级到开关级的多种抽象层次的数字系统设计。它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL的产生和应用可追溯到20世界80年代,1984年GDA(Gateway Design Automation)公司陆续开发了Verilog HDL及其仿真器,1989年Cadence收购了该公司,1990年Cadence公开发表了Verilog HDL,1995年成为IEEE标准,即IEEE Std.1364-1995或 Verilog HDL 1364-1995。22 Verilog HDL主要特点1) 既能进行面向综合的电路设计,又可用于电路的模拟仿真。2)

10、 能够在多个层次上对所设计的系统加以描述,从开关级、门级、寄存器传输级(RTL)到行为级等,都可以胜任;设计的规模是任意的,语言不对设计的规模施加任何限制。3) 灵活多样的描述风格,可进行行为描述,也可时行结构描述或数据流描述;支持混合建模,在一个设计中各个模块可以在不同的设计层次上建模和描述。4) Verilog HDL的行为描述语句,如条件语句、赋值语句和循环语句等,类似于软件高级语言,便于学习和使用。5) 内置各种基本逻辑门,如and、or和nand等,可方便地进行门级结构描述;内置各种开关级元件,如pmos、nmos和cmos等,可进行开关级的建模。6) 用户定义原语(UDP)创建的灵

11、活性。用户定义的原语既可以是组合逻辑;可通过编程语言接口(PLI)机制进一步扩展Verilog HDL语言的描述能力。PLI是允许外部函数访问Verilog HDL模块内信息,允许设计者与模拟器交互的例程集合。23 Verilog HDL语言开发软件-QuartusVerilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),常用的Verilog HDL语言开发软件有Altera公司的MAX+PLUS II,Quartus II和Xilinx公司的Foundation ISE。本文主要是利用软件Quartus II的文本输入设计方式来进行设计的

12、。Quartus II是Altera公司推出的新一代开发软件,适合于大规模逻辑电路设计。Quartus II软件的设计流程概括为设计输入、设计编译、设计仿真和设计下载等过程。Quartus II软件支持多种编辑输入法,包括图形编辑输入法、VHDL、Verilog HDL的文本输入法、符合编辑输入法,以及内存编辑输入法。第3章 数字钟Verilog HDL的设计31设计方案及工作原理 3.1.1数字钟设计原理 数字钟的示意如下图所示。它由石英晶体振荡器、分频器、计数器、译码器显示器和校时电路组成。振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向

13、分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计数器的输出分别经译码器送显示器显示。计时出现误差时,可以用校时电路校时、校分。产生闹铃和报时音校时时、分、秒计时时间显示数字钟示意图如上图所示312 数字钟功能1) 具有正确的时、分、秒计时功能。2) 计时结果要用数码管分别显示进、分、秒的十位和个位。3) 有校时功能。当S键按下时,分计数器以秒脉冲的速度递增,并按60min循环,即计数到期59min后再回到00。当工A键按下时,时计数器以秒脉冲的速度递增,并按24h循环,即计数到23h后再回00。4) 利用扬声器整点报时。当计时到达59分59秒时开始报时,在

14、59分50秒、52秒、54秒、56秒、58秒时鸣叫,鸣叫声频为500hz;到达59分60秒时为最后一声整点报时,频率为1khz。32 数字钟钟控定时器的基本组成 数字钟钟控定时器由:计数器、D触发器、数据选择器、数据分配器、译码器、报时器、闹时器组、分频器和一个或非门这九大模块构成。计数器主要分为24进制计数器和60进制计数器,24进制计数器对数字钟的小时位计行计数,60进制对数字钟的分和秒进行计数。D触发器主要是用在对数字进行校准时的按键消抖作用,以免在校时的时候产生抖动信号。数据分配器的作用是在动态译码时选择输出数据。译码器对输出信号进行译码在数码管上显示出来,让大家数字钟的表示直观。报时

15、电路是使时钟在整点有报时功能而设计的。闹时器是对时钟进行比较产生闹时电信号的电路。3.2.1 D触发器的设计在本设计中运用到了3个D触发器,它主要是用在对数字进行校准时的按键消抖作用,以免在校时的时候产生抖动信号。在电路中用到了D触发器74LS74,74LS74的管脚图如图3-1。D2Q5Q6CLK341PRECLRA74LS74图3-1 74LS74管脚图触发器,它是由门电路构成的逻辑电路,它的输出具有两个稳定的物理状态(高电平和低电平),所以它能记忆一位二进制代码。触发器是存放在二进制信息的最基本的单元。按其功能可为基本RS触发器触、JK触发器、D触发器和T触发器。这几种触发器都有集成电路

16、产品。其中应用最广泛的当数JK触发器和D触发器。不过,深刻理解RS触发器对全面掌握触发器的工作方式或动作特点是至关重要的。事实上,JK触发器和D触发器是RS触发器的改进型,其中JK触发器保留了两个数据输入端,而D触发器只保留了一个数据输入端。D触发器有边沿D触发器和高电平D触发器。74LS74为一个电平D触发器。3.2.2数据选择器的设计 在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关。数据选择器(MUX)的逻辑功能是在地址选择信号的控制下,从多路数据中选择一路数据作为输出信号。通过QuartusII软件进行编译后,仿真结果如图3-2所示

17、,图3-2 2选一数据选择器仿真结果打包后成元器件如图3-3所示;图3-3 2选一数据选择器3.2.3 计数器的设计计数器是一种计算输入脉冲的时序逻辑网络,被计数的输入信号就是时序网络的时钟脉冲,它不仅可以计数而且还可以用来完成其他特定的逻辑功能,如测量、定时控制、数字运算等等。数字钟的计数电路是用两个六十进制计数电路和“24进制”计数电路实现的。数字钟的计数电路的设计可以用反馈清零法。当计数器正常计数时,反馈门不起作用,只有当进位脉冲到来时,反馈信号将计数电路清零,实现相应模的循环计数。以六十进制为例,当计数器从00,01,02,59计数时,反馈门不起作用,只有当第60个秒脉冲到来时,反馈信

18、号随即将计数电路清零,实现模为60的循环计数。下面是用Verilog HDL语言编写的24进制、60进制计数器的程序代码:1)24进制计数器程序代码;module count24(ten,one,clk);output3:0 ten,one;input clk;reg3:0 ten,one;always (posedge clk)beginif(ten3:0=2&one3:0=3)beginten3:0=0;one3:0=0;endelse if(one3:0=9)beginone3:0=0;ten3:0=ten3:0+1;endelseone3:0=one3:0+1;endendmodule

19、通过QuartusII软件进行编译后,仿真结果如图3-4所示,图3-4 24进制计数器仿真结果打包后成元器件如图3-5所示;图3-5 24进制计数器2)60进制计数器程序代码;module count60(cout,ten,one,clk);output3:0 ten,one;output cout;input clk;reg3:0 ten,one;always (posedge clk)beginif(one3:0=9)beginone3:0=0;if(ten3:0=5)ten3:0=0;elseten3:0=ten3:0+1;endelseone3:0=one3:0+1;endassign

20、 cout=(ten3:0=0&one3:0=0)?1:0;endmodule通过QuartusII软件进行编译后,仿真结果如图3-6所示;图3-6 60进制计数器仿真结果打包后成元器件如图3-7所示;图3-7 60进制计数器3.2.4 数据分配器能够将1个输入数据,根据需要传送到m个输出端的任何一个输出端的电路,叫做数据分配器,又称为多路分配器,其逻辑功能正好与数据选择器相反。电路结构:由与门组成的阵列。分类:1路-4路数据分配器(如74LS139)、1路-8路数据分配器(74LS138)等。由于译码器和数据分配器的功能非常接近,所以译码器一个很重要的应用就是构成数据分配器。 也正因为如此,

21、市场上没有集成数据分配器产品,只有集成译码器产品。 通过QuartusII软件进行编译后,仿真结果如图3-8所示;图3-8 数据分配器仿真结果打包后成元器件如图3-9所示;图3-9 数据分配器3.2.5译码器 译码器是一个多输入、多输出的组合逻辑电路。它的工作是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。译码器在数字系统中有广泛的用途,不仅用于代码的转换、终端的数字显示,还用于数字分配,存储器寻址和组合控制信号等。译码器可以分为通用译码器和显示译码器两大类。在电路中用的译码器是共阴极译码器74LS48,用74LS48把输入的8421BCD码ABCD译成七段输出a

22、-g,再由七段数码管显示相应的数。 通过QuartusII软件进行编译后,仿真结果如图3-11所示;图3-11 译码器仿真结果3.2.6分频器分频器的作用是将由石英晶体产生的高频信号分频成基时钟脉冲信号和扩展部分所需的频率。在此电路中,分频器的功能主要有两个:一是产生标准脉冲信号;二是功能扩展电路所需的信号,如仿电台用的1KHz的高频信号和500Hz的低频信号等.可以组成二分频电路和四分频电路和十六分频器。打包后成元器件如图3-12所示; 图3-12 2分频、4分频、16分频分频器3.2.7闹时器数字钟在指定的时刻发出信号,或驱动音响电路“闹时”;或对某装置的电源进行接通或断开“控制”。不管是

23、闹时还是控制,都要求时间准确,即信号的开始时刻与持续时间必须满足规定的要求。在这里将举例来说明它的工作原理。要求上午7时59分发出闹时信号,持续1分钟。设计如下:7时59分对应数字钟的时时个位计数器的状态为,分十位计数器的状态为,分个位计数器的状态为,若将上述计数器输出为“1”的所有输出端经过与门电路去控制音响电路,就可以使音响电路正好在7点59分响,持续1分钟后(即8点)停响。所以闹时控制信号Z的表达式为式中,M为上午的信号输出,要求M=1。如果用与非门实现的逻辑表达式为:在电路图中用到了4输入二与非门74LS20,集电极开路的2输入四与非门74LS03,因OC门的输出端可以进行“线与”,使

24、用时在它们的输出端与电源+5V端之间应接一电阻RL。RL的值由下式决定: =0.4V,=0.4mA,=2.4V,=50uA,=8mA,=100Ua;m为负载门输入端总个数。取RL=3.3K。如果控制1KHz高音和驱动音响电路的两极与非门也采用OC门,则RL的值应该重新计算。由电路图可以看见,上午7点59分,音响电路的晶体管导通,则扬声器发出1KHz的声音。持续1分钟到8点整晶体管因为输入端为“0”而截止,电路停闹。 闹时器程序代码;module nsdl(out,m1,m2,h1,h2,tenh,oneh,tenm,onem,clk1k,cin);output out;input3:0 m1,

25、m2,h1,h2,tenh,tenm,oneh,onem;input cin, clk1k;reg out;always (m1 or m2 or h1 or h2 or tenh or tenm or oneh or onem or cin) beginif(cin) out=0;else if(cin=0)beginif(tenh=h1&oneh=h2&tenm=m1&onem=m2) out=clk1k;elseout=0;endendendmodule打包后成元器件如图3-13所示;图3-13 闹时器328 报时器(一)功能要求报时的功能要求是:每当数字钟计时快要到正点时,通常按照4低

26、音1高音的顺序发出间断声响,以最后一声高音结束的时刻为正点时刻。(二)该电路的工作原理电路图的工作原理举例来说明;例如设4声低音(约500Hz)分别 在59分51秒、53秒、55秒及57秒,最后一声高音(约1000Hz)发生在59秒,它们的持续时间为1秒。只有当分十进位的,分个位的,秒十位的及秒个位的时,音响电路才能工作。(三)对该电路中使用的元件的介绍因为在该电路中所用的元件主要是74LS00、74LS04及74LS20这些元件在前面的电路中已经介绍.这里就不再介绍它了报时器程序代码;module baoshi(tenm,onem,tens,ones,q500,q1k,a,b);input

27、a,b;input 3:0tenm,onem,tens,ones;output q500,q1k;reg q500,q1k;always (tenm or onem or tens or ones)beginif (tenm,onem=8h59&tens,ones=8h50|tenm,onem=8h59&tens,ones=8h52|tenm,onem=8h59&tens,ones=8h54|tenm,onem=8h59&tens,ones=8h56|tenm,onem=8h59&tens,ones=8h58)q500=a;else q500=0;endalways (tenm or onem

28、 or tens or ones)beginif (tenm3:0=0000&onem3:0=0000)&(tens3:0=0000&ones3:0=0000)q1k=b;else q1k=0;endendmodule打包后成元器件如图3-14所示;图3-14 报时器33 数字钟原理图将各模块组合一起构成如图3-15所示: 第4章 软件调试软件调试的过程据功能的增加分为几步:首先,根据原来的100进制显示程序的基础上编写成时分秒六位显示的主程序。该程序将时分秒分成个位和十位分别计算,所以将60进制和24进制变成10进制、6进制和2进制。又因为如果时十位为2的话,不能大于3,所以在分十位向时个位

29、进位时得判断时十位是否为2,在组员的帮助下经过不断试验和修改终于完成。过程比较顺利。该电子钟使用一个键来调时,利用长按来选择所要调的位,用短暂按下来对位进行加1,前提是时钟暂停,这个功能也是通过长按来实现的。选位是从秒个位到时十位依次选取,但到时十位以后就回不到秒个位了,就是不会循环。所以就得对选的位进行检查,如果到了时十位再按取位键就重新赋给秒个位地址。这样就可以循环选位了。但在后来的测试中又有了新的问题,如果该位到了9,对一个位进行加1调整就会显示乱码。时分秒的十位都会调到9!对于这个问题费看一些周折。起先构思再加一个减一的键,但不但没有解决这个乱码问题而且减到了0一下很可能也会出现乱码。

30、所以就转而寻求程序解决。调时的时候让它也像正常运行的时候进位?没见过这样的。继而决定在进行加1调时的时候检测该位是否到10或6或3。所以就产生了所谓的调时比较子程序,就是在调时的时候将该位跟10或6或3比较。最后,调试的时候却总是出现这样的情况:所调的位超过了9或5或2就变成乱码。比原来进步的地方就是时分秒的十位不用超过9就变成乱码。这说明虽然还没成功,但还是有前展的。就继续调试。 结论我们对SOPC课程设计这门课的学习主要是理论学习和实验实践两个部分。通过对其理论知识的学习,我对硬件描述语言有了初步的认识,学会利用硬件描述语言完成相应功能系统的设计。在实验中,我们可以通过自己的实际操作,找出

31、问题,改正错误,提出改进之法,大胆创新,使自己的能力在实践中成长起来。经过这几周的实验,我基本了解了实验设计过程。虽然有些实验很简单,但是他们体现了EDA设计的大概流程 。通过这么多次的试验我将一些在课堂上了解了的知识的运用到了实验中,经过实验课之后,我对于VHDL语言的理解更加深刻了,本来有些不理解的理论知识,都能通过实验得到一定解答。在实验的过程中,有时遇到难题的时候,我们上网或去图书馆查找资料,或者向老师和同学们讨论,在这个过程中我学习到了一些我们在课堂上学不到的知识。通过这次课程设计使我更加深刻的懂得了理论与实际相结合的重要性!只有理论知识无法实现相关的设计和实际操作,当把所学的理论知

32、识与实践相结合起来,从理论中得出结论,这样才能把所学的理论知识更加巩固至掌握住,才能提高自己的实际动手能力和独立思考能力。参考文献1 李东生.电子设计自动化与IC设计.北京:高等教育出版社,20042 蔡明生.电子设计.北京:高等教育出版社,20043 齐洪喜,陆颖.VHDL电路设计使用教程.北京:清华大学出版社,20044 雷伏容.VHDL电路设计.北京:清华大学出版社,20065 黄仁欣.EDA技术实用教程.北京:清华大学出版社,20066 路而红.电子设计自动化应用技术.北京:高等教育出版社,20047 陈有卿.实用555时基电路300例.北京:中国电力出版社,20048 晶体管技术编辑

33、部.电子技术原理.制作.实验.北京:科学出版社,20059 张亦华,延明.数字电路EDA入门VHDL程序实例集.北京:北京邮电大学出版社,200310 王延才,赵德申.电子技术实训.北京:高等教育出版社,2003附录 下面是用Verilog HDL语言编写的2选一数据选择器的程序代码:module mux2(out,a,b,sel);output out;input a,b,sel;reg out;always (a or b or sel)beginif(sel=1)out=a;else out=b;endendmodule下面是用Verilog HDL语言编写的24进制、60进制计数器的程

34、序代码:1)24进制计数器程序代码;module count24(ten,one,clk);output3:0 ten,one;input clk;reg3:0 ten,one;always (posedge clk)beginif(ten3:0=2&one3:0=3)beginten3:0=0;one3:0=0;endelse if(one3:0=9)beginone3:0=0;ten3:0=ten3:0+1;endelseone3:0=one3:0+1;endendmodule2)60进制计数器程序代码;module count60(cout,ten,one,clk);output3:0

35、ten,one;output cout;input clk;reg3:0 ten,one;always (posedge clk)beginif(one3:0=9)beginone3:0=0;if(ten3:0=5)ten3:0=0;elseten3:0=ten3:0+1;endelseone3:0=one3:0+1;endassign cout=(ten3:0=0&one3:0=0)?1:0;endmodule数据分配器程序代码:module x(q,L,hten,hone,mten,mone,sten,sone,clk);output3:0 q;output5:0 L;input 3:0

36、hten,hone,mten,mone,sten,sone;input clk;reg3:0 q,rel;reg5:0 L;always (posedge clk)beginif(rel3:0=5) rel3:0=0;elserel3:0=rel3:0+1;endalways (rel )beginif(rel3:0=0) begin q3:0=sone3:0; L5:0=6b111110;endelse if(rel3:0=1) begin q3:0=sten3:0;L5:0=6b111101;endelse if(rel3:0=2) begin q3:0=mone3:0;L5:0=6b11

37、1011;endelse if(rel3:0=3) begin q3:0=mten3:0; L5:0=6b110111;endelse if(rel3:0=4) begin q3:0=hone3:0; L5:0=6b101111;endelse begin q3:0=hten3:0;L5:0=6b011111;endendendmodule译码器程序代码;module yima308(out,in);output7:0 out;input3:0 in;reg7:0 out;always (in) begin case(in)4d0:out=8b00000010;4d1:out=8b100111

38、10;4d2:out=8b00100100;4d3:out=8b00001100;4d4:out=8b10011000;4d5:out=8b01001000;4d6:out=8b01000000;4d7:out=8b00011110;4d8:out=8b00000000;4d9:out=8b00001000;endcaseendendmodule1)2分频程序代码;module fen2(a,b,q);input b;output a;output q;reg q;always (posedge b )begin q=q+1; endassign a=(q=4d1)?1:0;endmodule

39、2)4分频程序代码;module fen4(a,b,q);input b;output a;output1:0 q;reg1:0q;always (posedge b )begin q=q+1; endassign a=(q=2d3)?1:0;endmodule3)16分频程序代码;module fen16(a,b,q);input b;output a;output3:0 q;reg3:0q;always (posedge b )begin q=q+1; endassign a=(q=4d15)?1:0;endmodule 闹时器程序代码;module nsdl(out,m1,m2,h1,h

40、2,tenh,oneh,tenm,onem,clk1k,cin);output out;input3:0 m1,m2,h1,h2,tenh,tenm,oneh,onem;input cin, clk1k;reg out;always (m1 or m2 or h1 or h2 or tenh or tenm or oneh or onem or cin) beginif(cin) out=0;else if(cin=0)beginif(tenh=h1&oneh=h2&tenm=m1&onem=m2) out=clk1k;elseout=0;endendendmodule报时器程序代码;modu

41、le baoshi(tenm,onem,tens,ones,q500,q1k,a,b);input a,b;input 3:0tenm,onem,tens,ones;output q500,q1k;reg q500,q1k;always (tenm or onem or tens or ones)beginif (tenm,onem=8h59&tens,ones=8h50|tenm,onem=8h59&tens,ones=8h52|tenm,onem=8h59&tens,ones=8h54|tenm,onem=8h59&tens,ones=8h56|tenm,onem=8h59&tens,ones=8h58)q500=a;else q500=0;endalways (tenm or onem or tens or ones)beginif (tenm3:0=0000&onem3:0=0000)&(tens3:0=0000&ones3:0=0000)q1k=b;else q1k=0;endendmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号