数字系统设计实验三

合集下载

本科数电实验教案

本科数电实验教案

本科数电实验教案一、实验目的1. 理解并掌握数字电路的基本原理和实验技能。

2. 熟悉常用逻辑门电路及其功能。

3. 学会使用逻辑门电路进行简单的数字系统设计。

4. 培养动手能力和团队协作能力。

二、实验原理1. 逻辑门电路:与门、或门、非门、异或门等。

2. 逻辑函数及其表示方法:真值表、逻辑图、卡诺图等。

3. 数字电路的基本组成部分:触发器、计数器、译码器等。

4. 数字系统的设计与验证方法。

三、实验器材与仪器1. 数字电路实验箱。

2. 逻辑门电路模块。

3. 触发器、计数器、译码器等模块。

4. Multisim、Proteus等仿真软件。

四、实验内容与步骤1. 实验一:逻辑门电路的搭建与测试步骤:a. 根据真值表搭建与门、或门、非门、异或门电路。

b. 使用Multisim、Proteus等软件进行仿真,验证电路功能。

2. 实验二:数字电路的基本组成部分——触发器步骤:a. 搭建基本RS触发器、D触发器、JK触发器等。

b. 利用仿真软件验证触发器的工作原理。

c. 分析不同触发器之间的联系与区别。

3. 实验三:计数器的设计与仿真步骤:a. 搭建二进制计数器电路。

b. 利用仿真软件验证计数器的功能。

c. 分析计数器的工作原理,探讨计数器的应用场景。

4. 实验四:译码器的设计与仿真步骤:a. 搭建4-16译码器电路。

b. 利用仿真软件验证译码器的功能。

c. 分析译码器的工作原理,探讨译码器的应用场景。

5. 实验五:数字系统的设计与验证步骤:a. 结合所学知识,设计一个简单的数字系统(如计算器、频率发生器等)。

b. 搭建数字系统电路,利用仿真软件进行验证。

五、实验要求与评价1. 实验报告:要求对每个实验的原理、过程、结果进行详细描述,并对实验中遇到的问题进行分析和解答。

2. 实验操作:要求熟练操作实验设备,正确搭建电路,充分理解实验原理。

3. 实验态度:要求认真观察实验现象,积极参与讨论,主动请教老师和同学。

4. 实验成果:要求实验结果准确,能够对数字电路进行分析与设计。

数字逻辑与数字系统设计课程设计

数字逻辑与数字系统设计课程设计

数字逻辑与数字系统设计课程设计一、课程设计背景数字逻辑与数字系统设计课程介绍了数字电路的基本概念、设计和分析方法。

数字逻辑是电子技术中非常重要的一部分,广泛应用于计算机、通信、自动化控制、计算器、游戏机等电子产品。

通过本课程的学习,学生将掌握数字逻辑和数字系统设计的基本原理和方法。

二、课程设计内容本次数字逻辑与数字系统设计课程设计主要分为以下几个部分:1.实验一:Karnaugh图和逻辑多路选择器设计实验2.实验二:数字逻辑电路的组合设计实验3.实验三:数字电路的时序设计实验4.实验四:数字系统设计实验5.实验五:数字逻辑综合设计实验实验一:Karnaugh图和逻辑多路选择器设计实验通过本实验,学生将学会运用Karnaugh图方法设计简单的逻辑电路,掌握最小化布尔函数的方法。

同时,学生将学习多路选择器的设计方法,掌握多路选择器的应用技巧。

实验二:数字逻辑电路的组合设计实验通过本实验,学生将学习的是数字逻辑电路的组合设计方法,包括基本逻辑门和复杂逻辑电路的设计技术。

同时,学生还将掌握基本电路的仿真方法,通过仿真软件对电路进行验证。

实验三:数字电路的时序设计实验在本实验中,学生将掌握数字电路的时序设计方法,了解时序电路的作用、分类和基本原理。

同时,学生将学习数字电路时序仿真的方法,能够进行基本时序电路模拟。

实验四:数字系统设计实验在本实验中,学生将学习数字系统设计的基本方法和过程,包括总体结构设计、输入输出接口的设计、存储器的设计等;同时,学生还将了解数字系统的仿真和测试方法,对设计的数字系统进行仿真和测试。

实验五:数字逻辑综合设计实验在本实验中,学生将通过数字逻辑综合设计,掌握数字逻辑综合应用技巧,并能够在实践中学习根据需求进行电路综合的方法。

三、课程设计特点本次数字逻辑与数字系统设计课程设计不仅注重理论教学,更加强调实践教学,特点如下:1.注重实验教学,对学生的动手能力和实践能力进行提高。

2.充分利用仿真软件进行电路设计和验证,使学生在熟悉实际电路设计方法的同时,也能提高计算机仿真的技能和水平。

实验三3-8译码器的功能测试及仿真

实验三3-8译码器的功能测试及仿真

实验三3-8译码器的功能测试及仿真实验三3-8译码器功能测试及仿真⼀、实验⽬的1、掌握中规模集成3-8译码器的逻辑功能和使⽤⽅法。

2、进⼀步掌握VHDL语⾔的设计。

⼆、预习要求复习有关译码器的原理。

三、实验仪器和设备1.数字电⼦技术实验台1台2.数字万⽤表1块3.导线若⼲4.MUX PLUSII软件5.74LS138集成块若⼲四、实验原理译码器是⼀个多输⼊、多输出的组合逻辑电路。

它的作⽤是把给定的代码进⾏“翻译”,变成相应的状态,使输出通道中相应的⼀路有信号输出。

译码器在数字系统中有⼴泛的⽤途,不仅⽤于代码的转换、终端的数字显⽰,还⽤于数据分配,存贮器寻址和组合控制信号等。

不同的功能可选⽤不同种类的译码器。

译码器分为通⽤译码器和显⽰译码器两⼤类。

前者⼜分为变量译码器和代码变换译码器。

1.变量译码器(⼜称⼆进制译码器)⽤以表⽰输⼊变量的状态,如2线-4线、3线-8线和4线-16线译码器。

若有n个输⼊变量,则有2n个不同的组合状态,就有2n个输出端供其使⽤。

⽽每⼀个输出所代表的函数对应于n个输⼊变量的最⼩项。

以3线-8线译码器74LS138为例进⾏分析,下图(a)、(b)分别为其逻辑图及引脚排列。

其中 A2、A1、A0为地址输⼊端,0Y~7Y为译码输出端,S1、2S、3S为使能端。

下表为74LS138功能表,当S1=1,2S+3S=0时,器件使能,地址码所指定的输出端有信号(为0)输出,其它所有输出端均⽆信号(全为1)输出。

当S1=0,2S+3S=X时,或 S1=X,2S+3S=1时,译码器被禁⽌,所有输出同时为1。

3-8线译码器74LS138逻辑图及引脚排列图74LS138功能表输⼊输出S12S+3S A2A1A00Y1Y2Y3Y4Y5Y6Y7Y1 0 0 0 0 0 1 1 1 1 1 1 11 0 0 0 1 1 0 1 1 1 1 1 11 0 0 1 0 1 1 0 1 1 1 1 11 0 0 1 1 1 1 1 0 1 1 1 11 0 1 0 0 1 1 1 1 0 1 1 11 0 1 0 1 1 1 1 1 1 0 1 11 0 1 1 0 1 1 1 1 1 1 0 11 0 1 1 1 1 1 1 1 1 1 1 00 ×××× 1 1 1 1 1 1 1 1× 1 ××× 1 1 1 1 1 1 1 1⼆进制译码器实际上也是负脉冲输出的脉冲分配器。

北京理工大学数字系统设计与实验报告

北京理工大学数字系统设计与实验报告

3、仿真结果 功能仿真设置:
功能仿真结果: (1)总体仿真结果
(2)reset 高有效和二分频仿真结果
(3)四分频仿真结果
(4)八分频仿真结果
(5)十六分频仿真结果
四、实验心得
通过本次实验,设计频率可选的模十状态机以及 7 段译码电路,学会了以代码 形式实现频率多路选择器的功能,巩固了模十状态机的实现方式,进一步掌握 VerilogHDL 硬件描述语言。
功能仿真结果:
时序仿真设置:
时序仿真结果:
2、 3—8 译码器 (1)设计思路 随着时钟信号 clk 上升沿的到来,输入 D2D1D0 从 000 加到 111,每个输入 D2D1D0 对应着一个输出 Q7Q6Q5Q4Q3Q2Q1Q0,对应关系如真值表所示:
输入 D2 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 D0 0 1 0 1 0 1 0 1 Q7 0 0 0 0 0 0 0 1 Q6 0 0 0 0 0 0 1 0 Q5 0 0 0 0 0 1 0 0 Q4 0 0 0 0 1 0 0 0
seg <= 7'b0011001; 5: seg <= 7'b0010010; 6: seg <= 7'b0000010; 7: seg <= 7'b1111000; 8: seg <= 7'b0000000; 9: seg <= 7'b0010000; default: seg <= 7'b0001000; endcase end endmodule (2)功能图
三、设计与实现
1、设计思路 (1) 、时钟信号 clk 作为分频器的输入,分频器的设计思路为设计一个模十六计 数器,cp0(Q0)输出即为二分频信号,cp1(Q1)输出即为四分频信号,cp2(Q2) 输出即为八分频信号,cp3(Q3)输出即为十六分频信号。分频器的输出由 4 选 1 多 路选择器的选择输入端 select 选择 2 分频、4 分频、 8 分频和 16 分频其中之一作为状 态机的时钟输入,当 select 为 0 时,输出为二分频信号;为 1 时,输出为四分频信 号;为 2 时,输出为八分频信号;为 3 时,输出为十六分频信号。 (2) 、reset 为高有效,则若 reset 信号为 1 时,qout 置为 0,则 now_state 为 0。 若 reset 信号为 0 时, qout 自加,并作为状态机的输入 驱动,让状态机按照 0->2->5->6->1->9->4->8->7->3->0 的顺序输出。 (3) 、状态机按照 0->2->5->6->1->9->4->8->7->3->0 的顺序输出,并使用此输出 作为驱动输入到 7 段译码器的显示逻辑。

华南理工大学数字系统设计实验3报告资料

华南理工大学数字系统设计实验3报告资料

实验三基于状态机的交通灯控制地点:31号楼312房;实验台号:12实验日期与时间:2017年12月08日评分:预习检查纪录:批改教师:报告内容:一、实验要求1、开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。

2、交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。

3、为了方便观察,本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。

编程之前要求同学们先画好ASM图。

4、1Hz分频模块请采用第二次实验中的内容,7段码显示模块请参考书本相关内容。

5、第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。

方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。

和其它VHDL编写的模块可以混搭在一个电路图中使用。

EP2C8Q208C8的SCTP,SHCP,SER_DATA数码管信号线通过两块74HC595集成块,再驱动数码管。

6、芯片型号:cyclone:EP2C8Q208C8,开发板所有资料都在“新板”附件中,其中管脚配置在实验要求中是不对的,以“新板”附件中为准。

二、实验内容1设计要求开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。

交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。

本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。

2设计思路(1)数码管驱动第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。

方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。

和其它VHDL 编写的模块可以混搭在一个电路图中使用。

国开作业《数字电子电路》实验3集成计数器设计参考77

国开作业《数字电子电路》实验3集成计数器设计参考77

实验三集成计数器实验报告
一、实验目的和要求
1、学会用触发器构成计数器。

2、熟悉集成计数器。

3、掌握集成计数器的基本功能。

二、实验原理
计数器是数字系统中用的较多的基本逻辑器件,它的基本功能是统计时钟脉冲的个数,即实现计数操作,它也可用与分频、定时、产生节拍脉冲和脉冲序列等。

例如,计算机中的时序发生器、分频器、指令计数器等都要使用计数器。

计数器的种类很多。

按构成计数器中的各触发器是否使用一个时钟脉冲源来分,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器、十进制计数器和任意进制计数器;按计数过程中数字增减趋势的不同,可分为加法计数器、减法计数器和可逆计数器;还有可预置数等等。

1、用D触发器构成异步二进制加法/减法计数器
图5-1 3位二进制异步加法器
如上图5-1所示,是由3个上升沿触发的D触发器组成的3位二进制
异步加法器。

图中各个触发器的反相输出端与该触发器的D输入端相连,就把D触发器转换成为计数型触发器T。

将上图加以少许改变后,即将低位触发器的Q端与高一位的CP端相连,就得到3位二进制异步减法器,如下所示:
图5-2 3位二进制异步减法器
2、异步集成计数器74LS90
74LS90为中规模TTL集成计数器,可实现二分频、五分频和十分频等功能,它由一个二进制计数器和一个五进制计数器构成。

其引脚排列图和功能表如下所示:
图5-3 74LS90的引脚排列图。

数字电路与系统设计实验

数字电路与系统设计实验
这包括实验方案的正确性、可行性如何? 可否进一步优化?有哪些收获体会?有哪 些经验教训?有哪些建议?等。
第二章 实验基本仪器
数字系统设计实验所需设备有: 直流稳压电源,示波器,基于CPLD的 数字电路实验系统,万用表,信号源, 计算机。
一、直流稳压电源
二、示波器
示波器是一种用来测量电信号波形的 电子仪器。用示波器能够观察电信号 波形,测量电信号的电压大小,周期 信号的频率和周期大小。双踪示波器 能够同时观察两路电信号波形。
能块相对集中地排列器件 3.布线顺序 VCC,GND,输入/输出,控制线 4. 仪器检测(电源,示波器,信号源) 5.实验 测试、调试与记录
6.撰写实验总结报告
(1)实验内容 (2)实验目的 (3)实验设备 (4)实验方法与手段 (5)实验原理图 (6)实验现象(结果)记录分析 (7)实验结论与体会
(((四三一)))、、、实实验实验目验的提内示容
•• 11..注测1意试.掌被T握T测LT器T器L件、件H7的CT4引和L脚HS7C器0和件4引的一脚传个输1特非4性门分。的别传接输地特和 十性5。V2。.掌握万用表的使用方法。
•• •
(2连为输23特二.接 被 入)..性将测测、123到 测 电。实试 试...被 非 压六六六验验HH反反反测 门 值所CC台相相相T器用非 的 。上器器器器件器门输4件777件7的入.444774输电LHH4KH入压SCCHΩC00T端。电C4400,旋位T片片44转R器0片T一电LR4的个T位一L输非的器个出门电改非端的压变门电传输非的压输出门传作特端的输性。
四、数字电路测试及故障查找、排除
1.数字电路测试
数字电路静态测试指的是给定数字电路若干组静态输 入值,测定数字电路的输出值是否正确。

实验三数字基带传输系统建模和仿真

实验三数字基带传输系统建模和仿真

实验三 数字基带传输系统的建模与仿真一. 实验目的1. 了解数字基带传输系统的建模过程2. 了解数字基带传输系统的仿真过程二. 实验内容建立一个基带传输模型,发送数据为二进制双极性不归零码,发送滤波器为平方根升余弦滤波器,信道为加性高斯信道,接收滤波器与发送滤波器相匹配,接收机能自行恢复系统同步信号。

要求观察接收信号眼图,并设计接收机采样判决部分,对比发送数据与恢复数据波形,并统计误码率。

三. 实验原理数字基带传输系统框图如图5-1所示,它主要由脉冲形成器、发送滤波器、信道、接收滤波器和抽样判决器等部件组成为保证数字基带。

系统正常工作,通常还应有同步系统。

图中各部分原理及作用如下:脉冲形成器:输入的是由电传机、计算机等终端设备发送来的二进制数据序列或是经模/数转换后的二进制脉冲序列,用{}k d 表示,它们一般是脉冲宽度为T 的单极性码。

脉冲形成器的作用是将{}k d 变换成比较适合信道传输的码型,并提供同步定时信息,使信号适合信道传输,保证收发双方同步工作。

发送滤波器:发送滤波器的传输函数为()T G ω,其作用是将输入的矩形脉冲变换成适合信道传输的波形。

这是因为矩形波含有丰富的高频成分,若直接送入信道传输,容易产生失真。

信道:信道传输函数为()C ω。

基带传输的信道通常为有线信道,如市话电缆和架空明线等,信道的传输特性通常是变化的,信道中还会引入噪声。

在通信系统的分析中,常常把噪声等效,集中在信道引入。

这是由于信号经过信道传输,受到很大衰减,在信道的输图5-1 数字基带传输系统出端信噪比最低,噪声的影响最为严重,以它为代表最能反映噪声干扰影响的实际情况。

但如果认为只有信道才引入噪声,其他部件不引入噪声,是不正确的。

G ,它的主要作用是滤除带外噪声,对信道接收滤波器:接收滤波器的传输函数为()R特性进行均衡,使输出信噪比尽可能大并使输出的波形最有利于抽样判决。

抽样判决器:它的作用是在信道特性不理想及有噪声干扰的情况下,正确恢复出原来的基带信号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四简易数字钟下载1、实验目的1)学习掌握数字系统综合设计方法。

2)学习掌握层次设计方法。

3)学习掌握设计下载方法。

4)学习掌握实验系统使用方法。

2、实验原理数字钟是对输入时基秒脉冲进行计数,依次输出秒数值、分数值、小时数值,从而确定时钟时间,其原理框图如下图所示。

Image简易数字钟原理图简易数字钟原理图实际的数字钟设计中还需要增加年月日的功能,这里框图中也省略了校时功能的结构。

3、实验内容1)选择XC2S200PQ208器件建立一个新的工程。

2)在上述工程中,采用VHDL语言的方法设计上述简易数字钟。

3)参考实验系统使用说明,按下列要求锁定引脚。

秒、分钟、小时由实验系统的J1、J2输出,显示输出的时分秒间隔一位数码管。

时钟输入由J7的1脚输入。

4)下载编程并验证设计结果。

4、实验设备1)清华同方PⅣ 2.4G\256M60G2)ISE 6.2i—Windows软件系统3)多功能EDA实验系统(V型)5、实验步骤1)写出简易数字钟的设计程序。

2)画出简易数字钟的仿真波形。

3)将程序下载到芯片中。

a.首先点击菜单Assignments->Device,选择Device family->Cyclone IV E,然后选择芯片型号Available device->EP4CE6F17C8。

b.进行管脚锁定,选择菜单Assignments->Pin Planner,在Location列下为输入\输出变量选择对应的管脚进行锁定。

c.选择快捷菜单进行编译Start Compilation,生成下载文件。

d.点击Tools->Programmere.点击Add Device,在Device->Cyclone IVE中,选择Devicename->EP4CE6F17f.点击Add File,点开Output_file文件夹,选择*.sof文件g.删除显示为none的EP4CE6F17文件h.点击Start,进行下载。

实验板的晶振为50MHZ,数码管扫描频率为1000HZ。

管脚锁定为:clk_in PIN_E1 //1HZ的时钟脉冲信号clr PIN_E15 //将时间设置为00:00:00clr1 PIN_E16 //将时间设置为19:58:58clr2 PIN_M16 //将时间设置为23:58:58led_dig[7] PIN_A5 //数码管显示led_dig[6] PIN_B8led_dig[5] PIN_A7led_dig[4] PIN_B6led_dig[3] PIN_B5led_dig[2] PIN_A6led_dig[1] PIN_A8led_dig[0] PIN_B7led_sel[5] PIN_A4 //数码管选择led_sel[4] PIN_B4led_sel[3] PIN_A3led_sel[2] PIN_B3led_sel[1] PIN_A2led_sel[0] PIN_B16、程序代码clock.vmodule clock (clk_1Hz,clr,clr1,clr2,secH,secL,minH,minL,houH,houL);input clk_1Hz;input clr,clr1,clr2;output [3:0] secH,secL,minH,minL,houH,houL;reg [3:0] secTempH,secTempL,minTempH,minTempL,houTempH,houTempL; reg warn;wire secLQ,secHQ,minLQ,minHQ,houLQ;always@(posedge clk_1Hz or negedge clr or negedge clr1 or negedge clr2)begin:P1//秒个位----------------------if(clr==1'b0)secTempL<=4'b0000;else if(clr1==1'b0)secTempL<=4'b1000;else if(clr2==1'b0)secTempL<=4'b1000;else beginif(secTempL==4'b1001)secTempL<=4'b0000;elsesecTempL<=secTempL+1'b1;endendassign secL=secTempL;assign secLQ=secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0]; //秒十位-------------------------always@(posedge clk_1Hz or negedge clr or negedge clr1 or negedge clr2)begin:P2if(clr==1'b0)secTempH<=4'b0000;else if(clr1==1'b0)secTempH<=4'b0101;else if(clr2==1'b0)secTempH<=4'b0101;else beginif(secLQ==1'b1)beginif(secTempH==4'b0101)secTempH<=4'b0000;else secTempH<=secTempH+1'b1;endendendassign secH=secTempH;assign secHQ=(~secTempH[3])&secTempH[2]& (~secTempH[1])&secTempH[0]&secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//secTempH=0101,secTempL=1001//分个位-----------------always@(posedge clk_1Hz or negedge clr or negedge clr1 or negedge clr2)begin:P3if(clr==1'b0)minTempL<=4'b0000;else if(clr1==1'b0)minTempL<=4'b1000;else if(clr2==1'b0)minTempL<=4'b1000;else beginif(secHQ==1'b1)beginif(minTempL==4'b1001)minTempL<=4'b0000;elseminTempL<=minTempL+1'b1;endendendassign minL=minTempL;assign minLQ=minTempL[3]&(~minTempL[2])& (~minTempL[1])&minTempL[0]&(~secTempH[3])&secTempH[2]&(~secTempH[1])&secTempH[0]&secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//minTempL=1001,secTempH=0101,secTempL=1001//分十位------------------always@(posedge clk_1Hz or negedge clr or negedge clr1 or negedge clr2)begin:P4if(clr==1'b0)minTempH<=4'b0000;else if(clr1==1'b0)minTempH<=4'b0101;else if(clr2==1'b0)minTempH<=4'b0101;else beginif(minLQ==1'b1)beginif(minTempH==4'b0101)minTempH<=4'b0000;elseminTempH<=minTempH+1'b1;endendendassign minH=minTempH;assign minHQ=(~minTempH[3])&minTempH[2]& (~minTempH[1])&minTempH[0]&minTempL[3]&(~minTempL[2])&(~minTempL[1])&minTempL[0]&(~secTempH[3])&secTempH[2]&(~secTempH[1])&secTempH[0]&secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//minTempH=0101,minTempL=1001,secTempH=0101,secTempL=1001//时个位--------------always@(posedge clk_1Hz or negedge clr or negedge clr1 or negedge clr2)begin:P5if(clr==1'b0)houTempL<=4'b0000;else if(clr1==1'b0)houTempL<=4'b1001;else if(clr2==1'b0)houTempL<=4'b0011;else beginif(minHQ==1'b1)beginif(houTempL==4'b1001)houTempL<=4'b0000;else if(houTempL==4'b0011&houTempH==4'b0010)houTempL<=4'b0000;elsehouTempL<=houTempL+1'b1;endendendassign houL=houTempL;assign houLQ=((~houTempH[3])&(~houTempH[2])&houTempH[1]&(~houTempH[0])&(~houTempL[3])&(~houTempL[2])&houTempL[1]&houTempL[0]|houTempL[3]&(~houTempL[2])&(~houTempL[1])&houTempL[0])&(~minTempH[3])&minTempH[2]&(~minTempH[1])&minTempH[0]&minTempL[3]&(~minTempL[2])&(~minTempL[1])&minTempL[0]&(~secTempH[3])&secTempH[2]&(~secTempH[1])&secTempH[0]&secTempL[3]&(~secTempL[2])&(~secTempL[1])&secTempL[0];//(houTempH=0010,houTempL=0011|houTempL=1001),minTempH=0101,minTempL=10 //时十位----------------always@(posedge clk_1Hz or negedge clr or negedge clr1 or negedgeclr2)begin:P6if(clr==1'b0)houTempH<=4'b0000;else if(clr1==1'b0)houTempH<=4'b0001;else if(clr2==1'b0)houTempH<=4'b0010;else beginif(houLQ==1'b1)beginif(houTempH==4'b0010&houTempL==4'b0011)houTempH<=4'b0000;elsehouTempH<=houTempH+1'b1;endendendassign houH=houTempH;endmodulefreq_div1.vmodule freq_div1(clk_in_50MHz,clk_out_1Hz,clk_out_1KHz);input clk_in_50MHz;output clk_out_1Hz,clk_out_1KHz;reg[25:0] temp_counter;always @ (posedge clk_in_50MHz)beginif(temp_counter == 26'd49_999_999)temp_counter <= 26'd0;elsetemp_counter <= temp_counter + 26'd1;endassign clk_out_1Hz = temp_counter[25];assign clk_out_1KHz = temp_counter[14];endmodulefreq_div.vmodule freq_div(clk_in_50MHz,clk_out_1Hz,clk_out_1KHz); input clk_in_50MHz;output clk_out_1Hz,clk_out_1KHz;reg clk_out_1Hz,clk_out_1KHz;reg[15:0] temp_counter_1KHz;reg[8:0] temp_counter_1Hz;reg temp_clk_out_1KHz;reg temp_clk_out_1Hz;//reg temp_counter_1Hz;parameter N_1KHz=50000;parameter N_1Hz=1000;always@(posedge clk_in_50MHz)if(N_1KHz%2==0)beginif(temp_counter_1KHz<N_1KHz/2-1)begintemp_counter_1KHz<=temp_counter_1KHz+1'b1; endelsebegintemp_counter_1KHz<=16'b0;temp_clk_out_1KHz<=~temp_clk_out_1KHz;endclk_out_1KHz<=temp_clk_out_1KHz;endalways@(posedge temp_clk_out_1KHz)if(N_1Hz%2==0)beginif(temp_counter_1Hz<N_1Hz/2-1)begintemp_counter_1Hz<=temp_counter_1Hz+1'b1; endelsebegintemp_counter_1Hz<=16'b0;temp_clk_out_1Hz<=~temp_clk_out_1Hz;endclk_out_1Hz<=temp_clk_out_1Hz;endendmoduledisplay.vmodule display(led_sel_in,secH,secL,minH,minL,houH,houL,led_dig,led_sel_out);input[5:0] led_sel_in;input[3:0] secH,secL,minH,minL,houH,houL;output[7:0] led_dig;output[7:0] led_sel_out;reg[7:0] led_dig;reg[3:0] dig_temp;assign led_sel_out=led_sel_in;always@(led_sel_in,secH,secL,minH,minL,houH,houL) begincase(led_sel_in)6'b111110:dig_temp<=secL;6'b111101:dig_temp<=secH;6'b111011:dig_temp<=minL;6'b110111:dig_temp<=minH;6'b101111:dig_temp<=houL;6'b011111:dig_temp<=houH;endcasecase(dig_temp)4'd0:led_dig<=8'b11000000; 4'd1:led_dig<=8'b11111001; 4'd2:led_dig<=8'b10100100; 4'd3:led_dig<=8'b10110000; 4'd4:led_dig<=8'b10011001; 4'd5:led_dig<=8'b10010010; 4'd6:led_dig<=8'b10000010; 4'd7:led_dig<=8'b11111000; 4'd8:led_dig<=8'b10000000; 4'd9:led_dig<=8'b10010000; endcaseendendmodulescanner.vmodule scanner(clk_in,led_sel); input clk_in;output[5:0] led_sel;reg[5:0] led_sel;integer i;always@(posedge clk_in) begincase(i)0:beginled_sel<=6'b111110; i=1;end1:beginled_sel<=6'b111101; i=2;end2:beginled_sel<=6'b111011; i=3;end3:beginled_sel<=6'b110111; i=4;end4:beginled_sel<=6'b101111; i=5;end5:beginled_sel<=6'b011111; i=0;endendcaseendendmodulejyszz.vmodule jyszz(clk_in,clr,clr1,clr2,led_sel,led_dig);input clk_in,clr,clr1,clr2;output[5:0] led_sel;output[7:0] led_dig;wire clk_1Hz,clk_1KHz;wire[5:0] led_sel_temp;wire[3:0] secL,secH,minL,minH,houL,houH;freq_div freq_div0(clk_in,clk_1Hz,clk_1KHz);scanner scanner0(clk_1KHz,led_sel_temp);clock clock0(clk_1Hz,clr,clr1,clr2,secH,secL,minH,minL,houH,houL); display display0(led_sel_temp,secH,secL,minH,minL,houH,houL,led_dig,led_sel);endmodule。

相关文档
最新文档