北邮数字电路综合实验讲义.ppt_第1页
北邮数字电路综合实验讲义.ppt_第2页
北邮数字电路综合实验讲义.ppt_第3页
北邮数字电路综合实验讲义.ppt_第4页
北邮数字电路综合实验讲义.ppt_第5页
免费预览已结束,剩余77页可下载查看

下载本文档

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

文档简介

1、数字电路与逻辑设计实验,电子工程学院电路中心 史晓东,1,主要内容,课程介绍 数字系统设计 注意事项 综合实验题目,第一部分 课程介绍,3,课程安排,实验内容: 完成一个综合课题的设计及仿真、调试。 本学期实验教学进度:,4,考核方式,考核项目及成绩评定 操作成绩(30%) 包括实验考勤、态度及整理、系统设计、开放实验情况等 验收答辩(40%) 包括功能验收和答辩 实验报告(30%),5,考核方式,评定标准 实验态度:包括考勤、纪律等,实验结束时关闭计算机、示波器等仪表,保持实验台清洁、整齐。 实验设计方案:根据选定的题目,完成系统设计,主要内容包括:系统结构框图、方框图(模块划分)、模块之间

2、信息传递关系、各模块的输入输出信号、主要模块的详细设计(ASM图、MDS图)等。 开放实验:要求至少预约并按时参加2次开放实验,完成电路设计、仿真及调试。 硬件验收及答辩:根据题目要求在实验板上实现电路功能并演示说明,回答老师提出的问题。,6,课题报告要求,电子版和纸版各提交一份,最后一次实验后一周之内提交,开放实验,预约规则及注意事项 预约时间:在实验开始的前7天的早上8:00到前1天的晚上23:00,可以预约该次实验;同一时间段不同实验室的实验只可预约其中一个。 预约次数:每人同时最多预约2次实验,预约的实验结束后,可以再预约新的实验。 现场预约:当预约的学生小于实验室容量时,允许学生临时

3、来做实验,即直接到实验室预约。请在实验开始后1个小时内到实验室进行现场预约,否则实验情况不计入系统。 违约处理:如果学生未按预约时间到实验室做实验,又没有提前取消预约,计违约1次,累计违约每达到2次,信用等级下降一级,在实验预约人数超过实验室容量时,信用等级最低的学生将首先被取消实验资格,信用等级相同的情况下,根据预约时间取消最后预约的学生的实验资格。信用等级根据本学期实验违约情况计算,对之前的违约记录不进行累计。,7,开放实验,实验签到 时间要求:预约的学生在实验开始前15分钟至实验开始后30分钟在实验室签到,实验室在实验开始之后的30分钟之内为提前预约的学生保留实验台,超过30分钟,按未预

4、约的学生处理,并计1次违约。 签到方法:已预约的学生请携带有效证件在规定时间内到预约的实验室,实验室的系统中将显示所有预约学生的信息,签到时系统会自动为学生分配实验台,请务必按分配的组号就座。,8,第二部分 数字系统设计,10,主要内容,数字系统概述 数字系统设计方法 数字系统设计的描述方法 其它概念,11,数字系统概述,数字系统:由若干数字电路和逻辑部件构成的能够处理或传送数字信息的设备。 数字系统的三大组成部分:输入输出接口、数据处理器、控制器 区分数字系统与功能部件(数字单元电路)的标志:有无控制器,12,数字系统结构框图,13,数字系统设计方法,自底向上(bottom-up)设计法(试

5、凑设计法) 用试探的方法按给定的功能要求,选择若干模块(功能部件)来拼凑一个数字系统。 主要凭借设计者的熟练技巧和经验来实现 适用于小型数字系统的设计,14,数字系统设计方法,自顶向下(top-down)设计法 从整个系统功能出发,按一定原则将系统划分为若干子系统,再将每个子系统分为若干功能模块,再将每个模块分成若干较小的模块直至分成许多基本模块实现。,15,自顶向下设计法的步骤(一),确定初步方案,进行系统设计和描述; 明确设计课题的任务、要求、原理和使用环境,系统外部输入信号及输出信号的特性,以及系统所需要完成的逻辑功能和所要达到的技术指标等,然后确定初步方案。 描述方法:方框图、定时图(

6、时序图)、逻辑流程图。,16,自顶向下设计法的步骤(二),系统划分,进行子系统功能描述; 将系统划分为控制器和受控电路两部分, 受控电路又可以用各种模块(子系统)实现。 确定使用哪些子系统,以及各子系统与控制器之间的关系。 对各子系统和控制器进行功能描述:ASM图、MDS图等,17,自顶向下设计法的步骤(三),逻辑描述,完成具体设计。 设计具体电路。 传统方法:用标准的SSI、MSI、LSI或GAL等器件实现受控电路;用时序机设计方法实现控制器。 EDA方法:用PLD器件实现电路设计。,自顶向下的设计过程是一个反复修改和补充的过程。,18,例1:两人乒乓游戏机,以8个发光二极管代表乒乓球台,中

7、间两个发光管兼作球网。用发光管按一定的方向依次闪亮来表示球的运动,在游戏机两侧各设发球/击球开关SA和SB,当甲方发球时,靠近甲方的第一个发光管亮,然后依次点亮第二个球向乙方移动,球过网后到达设计者的规定的球位乙方即可击球,若乙方提前击球或未击到球,则甲方得分。然后重新发球进行比赛,直到某一方记分达到规定分,记分清零,重开一局比赛。,19,两人乒乓游戏机结构框图,20,模块划分,分频模块,记分模块,球台显示模块,译码模块,控制器,根据控制器的指令控制发光二极管的亮灭,将分数转换为数码管显示对应的译码数据,记录双方的得分,将原始时钟分频,产生系统中不同模块需要的时钟频率,21,数字系统的描述方法

8、(一),方框图 可详细描述数字系统的总体结构,直观易懂 每一个方框定义一个信息处理、存储或传送的子系统,在方框内用文字、表达式、通用符号或图形来表示该子系统的名称或主要功能 方框之间用带箭头的直线相连,表示各个子系统之间数据流或控制流的信息通道,箭头指示了信息传送的方向,22,两人乒乓游戏机逻辑划分方框图,23,数字系统的描述方法(二),定时图(时序图或时间关系图) 用来定时地描述系统各模块之间、模块内部各功能组件之间以及组件内部各门电路或触发器之间输入信号、输出信号和控制信号的对应时序关系和特征(信号是电平还是脉冲,是同步信号还是异步信号等)。,24,数字系统的描述方法(三),ASM(Alg

9、orithmic State Machine ) 图(算法状态机图、逻辑流程图) 用特定的几何图形、指向线和简练的文字说明,描述数字系统对信息的处理过程,以及控制单元所提供的控制步骤,以便于设计者发现和改进信息处理过程中的错误和不足,同时又是后续电路设计的依据 与通常的软件设计中的流程图相似,但它表示事件的精确时间间隔序列,而一般的流程图只表示事件序列,没有时间概念,25,ASM图的基本符号,26,两人乒乓游戏机的ASM图,27,数字系统的描述方法(四),MDS(Mnemonic Documented State)图 MDS图是设计数字系统控制器的一种简洁方法,它类似于状态转换图,可以由详细流

10、程图转换而来。 MDS图中用一个圆圈表示一个状态,状态名标注在圆圈内,圆圈外的符号或逻辑表达式表示输出,用定向线表示状态转换方向,定向线旁的符号或逻辑表达式表示转换条件。,28,两人乒乓游戏机的MDS图,29,例2:交通灯控制器,设计制作一个用于十字路口的交通灯控制器。 南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20秒、5秒和25秒; 当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,继续正常运行; 用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间;,30,交通灯控制器结构框图,31,交

11、通灯控制器逻辑划分方框图,32,交通灯控制器的ASM图,33,交通灯控制器的MDS图,第三部分注意事项,双色点阵,35,双色点阵的结构,36,COL,G 1 0 0 0 0 0 0 0,37,双色点阵,0,R 1 0 0 0 0 0 0 0,R 0 0 1 0 1 0 0 0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,G 0 0 1 0 1 0 0 0,ROW,注意实验板上的行列坐标,左下角为(0,0) ,右上角为(7,7) 。,38,双色点阵逐点扫描,(0,0),(7,7),39,双色点阵显示字符或图形,扫描显示采用ROW信号循环出0的方式,可以保证亮度一致。 扫描频率的选

12、择要保证显示稳定,没有闪烁,并且亮度足够(频率越高,亮度越低)。,(7,7),(0,0),40,双色点阵显示字符或图形,(7,7),(0,0),G 0 0 0 1 0 0 0 0,41,双色点阵显示橙色,R 0 0 0 1 0 0 0 0,ROW,双色点阵显示橙色,42,(7,7),(0,0),双色点阵,43,如何实现橙黄的渐变?,R、G用不同脉宽的信号控制 R信号占空比大,则颜色偏橙色; G信号占空比大,则颜色偏黄色,44,按键开关防抖动,由于按键动作的时刻和按下的时间长短是随机的。并且存在由开关簧片反弹导致的电平抖动,抖动的时间一般小于20mS,因此必须为每个按键开关设置一个消抖和同步电路

13、,此电路可有多种形式。,45,按键开关防抖动程序,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY keyin IS PORT(clk: INSTD_LOGIC; reset: INSTD_LOGIC; resetn : OUT STD_LOGIC); END keyin; ARCHITECTURE a OF keyin IS SIGNAL resetmp1,resetmp2 : STD_LOGIC; BEGIN PROCESS(clk) BEGIN IF (clkEVENT AND clk=0) THEN resetmp2= resetmp1

14、; resetmp1= reset; END IF; END PROCESS; resetn=clk AND resetmp1 AND (NOT resetmp2); END a;,46,按键开关防抖动程序仿真波形,按一次键,只产生一个脉冲,脉冲宽度为防抖动时钟的脉宽。,防抖动时钟的频率为100HZ左右,12分频(双进程),LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY div_12 IS PORT( clk, clear: IN STD_LOGIC; clk_out: OU

15、T STD_LOGIC ); END div_12; ARCHITECTURE a OF div_12 IS SIGNAL tmp: INTEGER RANGE 0 TO 11; BEGIN,47,p1:PROCESS (clear, clk) BEGIN IF clear=1 THEN tmp=0; ELSIF clkevent AND clk=1 THEN IF tmp=11 THEN tmp=0; ELSEtmp=tmp+1; END IF; END IF; END PROCESS p1; p2:PROCESS (tmp) BEGIN IF tmp6 THEN clk_out =1; E

16、LSE clk_out =0; END IF; END PROCESS p2; END a;,输出进程,48,毛刺,12分频仿真波形(双进程),p1:PROCESS (clear, clk) BEGIN IF clear=1 THEN tmp=0; ELSIF clkevent AND clk=1 THEN IF tmp=11 THEN tmp=0; ELSE tmp=tmp+1; END IF; IF tmp6 THEN clk_out =1; ELSE clk_out =0; END IF; END IF; END PROCESS p1;,49,单进程,12分频(单进程),50,12分频仿

17、真波形(单进程),51,CPLD/FPGA资源优化问题,通过优化,可以使用规模更小的可编程逻辑芯片,从而降低系统成本; 对于许多可编程逻辑器件,由于布线资源有限,耗用资源过多会严重影响电路性能; 为以后的技术升级留下更多的可编程资源,方便添加产品功能; 对于多数可编程逻辑器件,资源耗用太多会使器件功耗显著上升。,52,常用优化方法,软件优化 资源共享 串行化 正确使用VHDL描述,53,QuartusII的优化选项,资源共享,针对耗费逻辑资源比较多的模块,通过选择、复用的方式共享该模块,以减少资源使用。,55,55,if (sel = 1) then sum = a + b; else sum

18、 = c + d; end if;,56,if (sel = 1) then temp1 = a;temp2 = b; else temp1 = c;temp2 = d; end if; sum = temp1 + temp2;,57,串行化(一),把耗用资源较多、并行执行的逻辑块分割开来,提取相同的逻辑模块,在时间上复用该逻辑模块。 例:时钟分频电路 原始时钟fclk=1MHz 扫描显示时钟f1khz=1000Hz 按键防抖动时钟f100hz=100Hz 时间计时时钟f1hz=1Hz。,58,串行化(二),并行设计,44LCs,59,串行化(三),串行设计,21LCs,高速系统慎用,60,正

19、确使用VHDL描述,在组合逻辑进程中,其敏感向量表中要包含所有要读取的信号; 这是为了防止出现不必要的锁存器。 避免使用长的if-then-else语句,而使用case语句来代替; 防止出现较大的优先编码器,使得代码比较容易读懂。 定义整数类型的信号和变量时一定要用RANGE子句指定范围,61,编码常见问题,Multi Drive 的处理 当你在两个及两个以上的进程中对同一个信号进行写操作时,编译器会提示你Multi Drive(多重驱动)错误。 从硬件角度很容易理解为什么不能多重驱动。 信号只能在一个进程里面修改,但是可以在多个进程里面读取判断。所以要解决多重驱动,我们需要至少两个信号在进程

20、间进行通信。通过读取对方进程里面信号的值得到对方的状态,再根据对方不同状态对自己内部的信号进行操作。,编码常见问题,shumaguan1 fenshu2 fenshu2 fenshu2 fenshu2 fenshu3 fenshu3 fenshu3 fenshu3=“1111011”; END CASE;,没问题吧?貌似没有问题,大家也都说没有问题。可是问题就这么凭空产生了:显示分数的这两个数码管永远保持一致,没有任何的不同步。管脚没有问题,代码貌似没有问题,连板子都换了好几个了,问题依然存在。,这个问题纠结了我一个晚上加一个下午,终于我的一次无聊的举动改变了历史:,shumaguan fen

21、shu2 fenshu2 fenshu2 fenshu2 fenshu3 fenshu3 fenshu3 fenshu3=“1111011”; END CASE;,就是这样,然后我哭了。这真心纠结,是时序问题吗?,quartusII版本问题 版本不同可能编译时会报错 实验板的区别 601(蓝)、622(绿)、615(红)相同,时钟通过红色拨码开关选择,第4位为1时,选择高频,频率50M 603(黑),时钟通过按键选择,f7为最高频率25M,其它注意问题,63,其它注意问题,仿真加入中间信号 输出端口一般是显示器件译码后信号,仿真时不容易观察,可加入中间信号,便于查看电路状态变化。,64,下载文

22、件路径,经验之谈,要有总体布局规划,不能只着眼于一处 各模块间的关系、ASM图、方框图以及状态转移图 多查阅资料,熟悉语言的语法与用法 学会看仿真图 备份工程或VHDL,65,第四部分 综合实验题目,67,综合实验要求,综合实验每个题目选择人数不能超过6人 电路中心网站() 2015秋季学期数字实验课程要求及题目,68,综合实验题目,基于CPLD的简易洗衣机控制器的设计与实现 LED点阵风扇的设计与实现 打地鼠游戏的设计与实现 简易猜数字游戏机的设计与实现 简易数字电压表 简易计算器 电子节拍器的设计与实现,69,题目一简易洗衣机控制器的设计与实现,基本要求: 洗衣机的工作步骤为洗涤、漂洗和脱

23、水三个过程,工作时间分别为:洗涤30秒(进水5秒,洗衣15秒,排水5秒,甩干5秒),漂洗25秒(进水5秒,漂洗10秒,排水5秒,甩干5秒),脱水15秒(排水5秒,甩干10秒); 用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程; 用发光二极管显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应有声音提示使用者; 用点阵动画显示洗衣机工作过程中进水、波轮或滚筒转动、排水和甩干等的工作情况,四种工作情况的动画显示要有区别且尽可能的形象。 用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回

24、到暂停之前保留的状态; 提高要求: 三个过程的时间有多个选项供使用者选择。 可以预约洗衣时间。 自拟其它功能。,70,题目二 LED点阵风扇的设计与实现,基本要求: 用88点阵模拟风扇转动,并采用双色点阵显示。 风扇转动方式如图1所示,包括四个点阵显示状态,并按顺序循环显示。风扇转动速度根据环境温度分为4档,其中1档的四个显示状态之间的切换时间为2秒,2为1秒,3档为0.5秒,4档为静止不动。,图1 点阵模拟风扇转动示意图,71,基本要求: 环境温度通过2个BTN按键设置,一个用来增加,一个用来减少,温度可设置范围为1040,温度精度为1,并用两个数码管进行温度显示。风扇根据不同的温度自动采用

25、不同的转动速度,其中2024对应1档,2529对应2档,3040对应3档,1019对应4档,用一个数码管显示档位。 定时模式:在风扇不同转动速度下,可以通过按键切换进入定时模式。定时时间可设置范围为2059秒,采用两个数码管进行倒计时显示,当倒计时结束后,风扇状态保持静止不动。 设置开关键。风扇开机初始状态为20、1档,并有不小于5秒的开机音乐。关机状态为点阵全灭。 提高要求: 设计LED风扇的其他工作模式。 利用实验板上的温度传感器代替按键直接获取温度数据,实现对LED风扇四档转速的自动控制。 用数码管实时显示温度传感器的温度数据,精度为0.1。 自拟其他功能。,题目二 LED点阵风扇的设计

26、与实现,72,题目三 打地鼠游戏的设计与实现,基本要求: 设计一个挑战反应速度的“打地鼠”游戏,采用用88双色点阵显示游戏界面,其中游戏边界采用绿色LED显示,随机出现的地鼠采用红色LED显示,游戏有16个洞穴,如图1所示。 游戏洞穴每次随机出现一个地鼠,每个地鼠的最长保持时间为2秒,2秒后随机出现下一个地鼠。以44键盘的按键代表锤子,16个洞穴与16个按键一一对应,一旦锤子在2秒内击中地鼠,地鼠消失,数码管计分器分数加1分;若锤子一直没有击中地鼠,2秒后该地鼠消失。用两个数码管显示游戏成绩,当游戏成绩达到10分时游戏结束,点阵显示字符“V”。,图1 打地鼠游戏示意图,73,题目三 打地鼠游戏

27、的设计与实现,基本要求 用两个数码管对整个游戏进行倒计时,当游戏时间超过59秒而成绩未达到10分时,游戏失败,点阵显示字符“X”。 按复位键重新开始游戏,并开始倒计时。 提高要求: 增加游戏难关,在边界内每次随机出现两个地鼠,两个地鼠的最长保持时间均为2秒,2秒后随机出现下两个地鼠,锤子击中一个地鼠加1分,当游戏成绩达到20分而且游戏时间未超过59秒时,游戏结束,显示字符“V”,否则显示字符“X”。 自拟其他功能。,74,题目四简易猜数字游戏机的设计与实现,基本要求: 游戏规则:通常由两个人玩,一方出数字,另一方猜。出数字的人要想好一个没有重复数字的4位数,不能让猜的人知道。 数字设置:通过4

28、*4键盘进行4位数字输入,在数码管(DISP0DISP3)上显示当前所输入的数字。通过设置确定键(BTN1键)进行锁定,此时数码管上的数值消失,同时用点阵开始倒计时,即:初始状态点阵全亮,然后从右下角开始,由右到左、由下到上逐点逐排依次熄灭,间隔时间为1s,共计64s。 猜数字:可以通过4*4键盘进行4位数字输入进行猜数字,且每输入一位数字在数码管(DISP0DISP3)上显示当前所输入的数字,按确定键(BTN2键)进行确认,此时要根据输入的这组数字给出几A几B,其中: A前面的数字表示位置正确的数的个数,用DISP5显示 B前的数字表示数字正确而位置不对的数的个数,用DISP4显示 如正确答

29、案为 2134,而猜的人猜 5314,则是 1A2B,其中有一个4的位置对了,记为1A,而1和3这三个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B 接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。,75,基本要求 若数字正确则显示猜数字成功,点阵显示“”笑脸;若输入数字错误系统仍然处于猜数字状态,点阵显示“X”,并用蜂鸣器或led闪烁报警。 若到点阵全灭时(64s结束)仍未猜出正确数字,游戏失败,点阵显示“囧”。 设置游戏机开关。 提高要求: 若数字正确则显示猜数字成功,并用蜂鸣器播放一段乐曲。 随机产生数字,并不在数码管上显示,进行猜数字游戏,用点阵进行128s计时,即点阵轮询熄灭两次,其他要求同基本功能3、4和5。 自拟其他功能。,题

温馨提示

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

评论

0/150

提交评论