SOPCEDA综合课程设计报告 综合计时系统
EDA设计报告数字秒表设计

JIU JIANG UNIVERSITY数字逻辑系统课程设计报告设计课题:数字秒表设计专业:电子信息工程班级学号:学生姓名:指导教师:设计时间:2012-12-24——2012-12-28数字秒表1.设计任务与要求1.1、设计出的是一个能够精确反映计时时间,且具有复位、计时、暂停功能的数字秒表,老师要求是计下的时间存储下来并能以后调出显示出来。
1.2、设计的秒表输入脉冲为3MHz,秒表的最大计时范围为1h,精确度为0.01s,其度量单位有0.1s、1s、1min等档位,并且各档位可实现进位。
2.方案设计及主要技术思路2.1、方案一:用LED灯来显示计数结果。
将系统分为四个模块,分别为:顶层模块程序、3MHz--->100Hz分频模块、十进制计数器模块、六进制计数器模块。
顶层模块:由于十进制计数模块和六进制计数模块会产生计数溢出信号,而这些溢出信号有可能作为下一计数模块的时钟输入脉冲,因此需要使用一个顶层模块将这些基本模块通过元件调用与映射的关系进行有机结合。
分频模块:就是实现3MHz到100Hz的分频,实体定义3MHz时钟频率输入端和100Hz的时钟脉冲输出端。
十进制计数器模块:用来实现0.01s、0.1s、1s和1min单位单元的计数。
六进制计数器模块:用来实现10s、10min为单位单元的计数。
2.2、方案二:用数码管来显示计数结果。
将系统分为六个模块,分别为:3MHz->100Hz分频模块、48MHz->1KHz分频模块、十进制计数模块、六进制计数模块、锁存模块、数码管显示模块。
3MHz->100Hz分频模块:由于系统的精度是0.01s,因此要设置周期为100Hz 的时钟脉冲。
又因为数字秒表输入的脉冲为3MHz,所以外界每输入3000Hz的脉冲系统就输出一个频率,这时频率的时间周期刚好为0.01s,还有就是实现48MHz —>1KHz的功能给显示模块时钟信号的,而分频模块就是完成这样的功能。
SOPCEDA综合课程设计报告---综合计时系统

SOPC/EDA综合课程设计报告设计题目:综合计时系统设计者:学号:班级:指导老师:完成时间:目录1设计总说明 (3)1.1系统设计要求 (3)2综合计时系统设计与分析 (4)2.1 综合计时模块: (4)2.1.1单时钟电路构想 (4)2.1.2显示控制电路的设计 (7)2.1.3调整控制电路TZKZQ的设计 (10)2.2 系统单元仿真与分析 (11)2.2.1综合计时电路的仿真 (11)2.2.2调整控制电路的仿真 (12)2.2.3显示控制电路的仿真 (13)3外围电路设计 (14)3.1 直流稳压电源设计电路图 (14)3.2 显示电路的设计 (15)4收获与体会 (16)4.1 改进方法 (16)4.2 体会 (16)5设计参考资料 (18)6附录————程序段 (19)6.1 CONT60计时电路的VHDL源程序 (19)6.2 CONT30计时电路的VHDL源程序 (19)6.3 显示控制电路XSKZQ的VHDL源程序 (21)6.4 调整控制电路TZKZQ的VHDL源程序 (26)1设计总说明计时系统对现代人们生活学习工作等各方面有着巨大的作用,从以前的时钟、手表到至今,计时系统已经发展成为普遍性,综合性,简便性。
如何用更简单、可靠的原理,更轻便、廉价的设备,更精确、综合的计时,来设计电子计时器,是此设计的研究目的。
随着现代电子产品正以前所未有的高速度,向着功能多样化、体积最小化、功耗最低化迅速发展,如何提高产品性能,缩小产品体积,降低产品功耗,是对现代电子产品的基本要求,而EDA ,即电子设计自动化技术,正是为了适应现代电子产品的设计要求,伴随着计算机、集成电路、电子系统设计的发展,吸收数据库、图形学、图论与拓扑逻辑、计算数学、优化理论等多学科最新成果而逐步形成的一门新技术。
它以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑期间的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑简化、逻辑映射、编程下载等工作等。
eda计时器课程设计

eda计时器课程设计一、课程目标知识目标:1. 学生能够理解EDA计时器的基本原理和功能。
2. 学生掌握计时器的电路设计方法,了解不同类型计时器的优缺点。
3. 学生掌握计时器的编程方法,能够运用所学知识实现计时功能。
技能目标:1. 学生能够运用EDA软件进行计时器电路设计,具备实际操作能力。
2. 学生能够编写简单的计时器程序,实现计时功能。
3. 学生通过课程学习,提高分析问题、解决问题的能力。
情感态度价值观目标:1. 培养学生对电子设计的兴趣,激发创新精神。
2. 学生在团队合作中,学会沟通、协作,培养团队精神。
3. 学生在学习过程中,树立正确的价值观,认识到科技对社会发展的积极作用。
课程性质:本课程为实践性较强的电子设计课程,以项目为导向,结合理论知识与实践操作。
学生特点:学生处于高年级阶段,已具备一定的电子基础知识和编程能力。
教学要求:注重理论与实践相结合,以学生为主体,教师引导,培养学生的动手能力和创新能力。
通过分解课程目标为具体的学习成果,便于教学设计和评估。
二、教学内容1. 计时器原理:回顾时钟信号、晶振、分频器等基础知识,讲解EDA计时器的工作原理。
2. 计时器电路设计:介绍常见计时器电路,如555定时器、RTC实时时钟等,分析其电路特点和适用场景。
- 教材章节:第三章《数字电路设计》- 内容列举:555定时器、RTC实时时钟、分频器等电路设计方法。
3. 计时器编程:讲解计时器的编程方法,包括汇编语言和C语言编程。
- 教材章节:第四章《微控制器编程》- 内容列举:计时器编程思路、中断处理、寄存器配置等。
4. EDA软件应用:运用EDA软件(如Protel、Multisim等)进行计时器电路设计与仿真。
- 教材章节:第五章《电子设计自动化》- 内容列举:EDA软件操作、电路图绘制、仿真分析等。
5. 实践项目:设计并实现一个简单的EDA计时器,要求具备计时、报警等功能。
- 教材章节:第六章《实践项目》- 内容列举:项目要求、电路设计、程序编写、调试与优化等。
SOPC综合课程设计指导书

第一章EDA技术综合应用设计基础1.1 EDA技术综合应用的形式随着EDA技术的深入发展和EDA技术软硬件性能价格比的不断提高,EDA技术的应用将向广度和深度两个方面发展。
根据利用EDA技术所开发的产品的最终主要硬件构成来分,作者认为,EDA技术的应用发展将表现为如下几种形式:(1) CPLD/FPGA系统:使用EDA技术开发CPLD/FPGA,使自行开发的CPLD/FPGA作为电子系统、控制系统、信息处理系统的主体。
(2) ―CPLD/FPGA+MCU‖系统:综合应用EDA技术与单片机技术,将自行开发的―CPLD/FPGA+MCU‖作为电子系统、控制系统、信息处理系统的主体。
(3) ―CPLD/FPGA+专用DSP处理器‖系统:将EDA技术与DSP专用处理器配合使用,用―CPLD/FPGA+专用DSP处理器‖构成一个数字信号处理系统的整体。
(4) 基于FPGA实现的现代DSP系统:基于SOPC(a System on a Programmable Chip)技术、EDA技术与FPGA技术实现方式的现代DSP系统。
(5) 基于FPGA实现的SOC片上系统:使用超大规模的FPGA实现的,内含1个或数个嵌入式CPU或DSP,能够实现复杂系统功能的单一芯片系统。
(6) 基于FPGA实现的嵌入式系统:使用CPLD/FPGA实现的,内含嵌入式处理器,能满足对象系统要求的特定功能的,能够嵌入到宿主系统的专用计算机应用系统。
1.2 EDA技术综合应用的设计方法与建模1.2.1 分析方法传统的电路设计方法都是自底向上进行设计的,也就是首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成各模块后进行连接,最后形成系统。
在基于EDA技术的系统设计的最重要环节——在系统的基本功能或行为级上对设计的产品进行描述和定义时,我们采用自顶向下分析,自底向上设计的方法。
所谓―自顶向下分析‖,就是指将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模块,层层分解,直至整个系统中各子系统关系合理,并便于逻辑电路级的设计和实现为止。
eda计时器课程设计报告

1/100s计时器报告一、1/100s计时器的功能和结构1/100s计时器常用于体育竞赛及各种要求有较精确定时的各领域。
以往利用常用的中小规模集成电路也可以设计这种1/100s的计时器,但是其体积通常都较大,携带和使用都很不方便。
为此,要求设计一块专用的ASIC芯片,除开关、时钟和显示功能以外,它包括1/100s 计时器所有的控制和定时功能,其体积应和机械式计时器的大致相同。
1、功能要求(1)精度大于1/100s计时器能显示1/100s的时间,故提供给计时器的内部定时的时钟脉冲频率大于100hz,可选1khz。
(2)计时器的最长计时时间为1h在一般的短时计时器的应用中,1h是足够了,为此需要一个6位的显示器,显示的最长时间为59分59.99秒.(3)设置复位和启/停开关复位开关用来使计时器清零,并做好计时的准备。
启/停开关的使用方法应与传统的机械式计数器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关终止。
复位开关可以在任何的情况下使用,即使在计时的过程中,只要一按复位开关,计时进程应立即终止,并对计时器清零。
2、1/100s计时器的结构设想1/100s计时器的结构如下图2.1所示。
从图中可以看到,1/100s计时器由复位开关、启/停开关、系统电源复位电路、时钟脉冲发生器、7段LED显示器和1/100s计时控制芯片组成。
复位开关reset_sw 和start_stop_sw都是高电平有效。
另外,开关的消抖电路应在控制芯片中。
系统复位输入端sysres是计时器加电复位的输入端,其复位电路是为外加的,不包含在芯片中。
时钟输入clk是由外加时钟脉冲发生器的输出提供的,本设计中要求输入一个频率稳定的1Khz时钟脉冲。
6位显示器需要6个7段LED,控制芯片的7条段输出线segment (6 TO 0)与7段LEDd 对应连接。
控制芯片的6条common(5 TO 0)输出线分别接到各个LED,用来选择显示LED。
基于SOPC的嵌入式数字秒表课程设计

目录一摘要 (3)二课题简介 (3)三实验总体设计 (6)四数字秒表的工作原理及设计过程 (7)五设计过程 (19)六结论 (24)七参考文献 (25)一、摘要目前数字电子技术已经广泛地应用于计算机,自动控制,电子测量仪表,电视,雷达,通信等各个领域。
随着信息技术和网络技术的高速发展,嵌入式产品日益广泛地渗透到日常生活、科学研究和军事技术等领域。
人们在日常生活中,有很多时候要精确地计算时间,但往往因为人为因素造成人们不愿意看到的误差。
秒表是日常生活中比较常用的精确计时工具,特别是在体育竞技以及生产科研中,跳动精确的秒表更是有着不可替代的作用。
过去机械秒表的设计制作极为复杂,而且成本高、不稳定给使用者带来了不少的困扰。
但是随着电子技术的飞速发展,电子秒表的出现彻底改变了这一局面,电子秒表以其成本低廉、工作稳定、走时精确、操作简单在人类的工作生活中得到了广泛的应用。
秒表的出现,解决了传统的由于人为因素造成的误差和不公平性。
本设课程设计是主要采用sopc技术基于FPGA的数字秒表的设计,利用Verilog HDL语言和Quartus II 软件以及FPGA实验操作平台来实现的。
本论文的重点是用硬件语言Verilog HDL 来描述数字秒表,偏重于软件设计。
大致内容是首先简单介绍了EDA的现状和前景, Verilog HDL 语言特点,应用平台FPGA,之后阐述了数字秒表的设计思想和大体的设计流程,最后进入本设计的核心设计部分,用Verilog HDL 语言设计数字秒表电路,着重对各个模块进行了详细的分析和说明。
【关键词】Verilog HDL 语言;Quartus II 软件;数字秒表;SOPC技术二、课题简介SOPC技术是美国Altrea公司于2000年最早提出的,并同时推出了相应的开发软件Quartus II。
SOPC是基于FPGA解决方案的SOC,与ASIC的SOC解决方案相比,SOPC系统及其开发技术具有更多的特色,构成SOPC的方案有多种途径,我们主要用到的是:基于FPGA嵌入IP硬核的SOPC系统2.3基于FPGA嵌入IP硬核的SOPC系统即在FPGA中预先植入嵌入式系统处理器。
eda课程设计计时器
eda课程设计计时器一、课程目标知识目标:1. 让学生理解EDA技术的基本概念,掌握计时器电路的设计原理。
2. 使学生掌握计时器电路的组成部分,如触发器、计数器等。
3. 帮助学生了解计时器在实际应用中的功能和作用。
技能目标:1. 培养学生运用所学知识,设计并搭建简单计时器电路的能力。
2. 提高学生分析和解决计时器电路实际问题的能力。
3. 培养学生运用EDA软件进行电路仿真和调试的技能。
情感态度价值观目标:1. 培养学生对电子设计及其应用的兴趣,激发学生的创新意识。
2. 培养学生严谨的科学态度,提高学生的团队协作能力。
3. 增强学生的国家意识,认识到我国在EDA领域的发展潜力。
本课程针对的学生特点为具备一定电子基础知识,具有较强的动手能力和探究精神。
课程性质为理论与实践相结合,注重培养学生的实际操作能力。
在教学要求方面,强调学生对基本概念的理解,注重实际操作能力的培养,同时关注学生情感态度价值观的塑造。
通过本课程的学习,预期学生能够掌握计时器电路的设计原理和实现方法,具备一定的电子设计能力,并在情感态度价值观方面得到全面提升。
二、教学内容本课程教学内容主要包括以下几部分:1. 计时器电路基础知识:介绍EDA技术的基本概念,计时器电路的基本原理和分类,使学生了解计时器电路在实际应用中的作用。
2. 计时器电路的组成部分:详细讲解触发器、计数器等计时器电路核心部件的工作原理和应用。
3. 计时器电路设计方法:分析不同类型的计时器电路设计方法,如同步计时器、异步计时器等,并引导学生运用所学知识进行设计。
4. EDA软件使用:教授学生如何使用EDA软件进行计时器电路的绘制、仿真和调试,提高学生的实际操作能力。
5. 实践操作:安排学生分组进行计时器电路的设计、搭建和测试,培养学生的动手能力和团队协作精神。
教学内容安排如下:第1课时:计时器电路基础知识,介绍EDA技术和计时器电路原理。
第2课时:计时器电路的组成部分,分析触发器、计数器等核心部件。
EDA综合计时系统设计
SOPC/EDA综合课程设计报告设计题目:综合计时系统设计者:文波学号:08060108115班级:电气081指导老师:王忠锋完成时间:2011年1月13日目录1. 综合计时系统设计与分析 (2)1.1 系统设计要求 (2)1.2 系统设计方案 (2)1.2.1 综合计时电路的设计 (2)1.2.2 显示控制电路XSKZQ的设计 (5)1.2.3 调整控制电路TZKZQ的设计 (9)1.2.4 综合计时系统ZHJSQ的设计 (12)1.3系统单元仿真与分析 (13)1.3.1综合计时电路的仿真 (13)1.3.2 显示控制电路的仿真 (14)1.3.3调整控制电路的仿真 (15)1.3.3综合计时系统电路的仿真 (15)2. 改进方法 (16)3. 收获与体会 (16)参考文献 (17)1. 综合计时系统设计与分析1.1 系统设计要求设计一个综合性的计时系统,要求能实现年、月、日、时、分、秒及星期的计数等综合计时功能,同时将计时结果通过15个七段数码管显示,并且可通过两个设置键,对计时系统的有关参数进行调整。
具体系统功能面板如图1.1所示。
图1.1 系统功能面板1.2 系统设计方案 1.2.1 综合计时电路的设计根据系统的设计要求,综合计时电路可分为计秒电路、计分电路、计时电路、计星期电路、计日电路、计月电路、计年电路等7个子模块,这7个子模块必须都具有预置、计数和进位功能,设计思想如下:(1) 计秒电路:以直接输入或由分频器产生的秒脉冲作为计秒电路的计数时钟信号,待计数至60瞬间,进位,计分电路加1,而计秒电路则清零并重新计秒。
(2) 计分电路、计时电路:其设计思想与计秒电路类似。
(3) 计日电路:将计时电路产生的进位脉冲信号作为计日电路的计数时钟信号,通过系统辨认,确定本月总天数X(包括28、29、30、31四种情况),待计数至X +1瞬间,进位,计月电路加1,而计日电路返回1重新开始计数。
SOPC课程设计实验报告
SOPC课程设计实验报告基于SOPC的警示灯设计2013电子信息工程3班李婕20134557罗丹妮20134563一、设计目的1、熟悉掌握SOPC的基本流程2、设计一个警示灯并满足基本要求3、通过设计发现问题并解决二、设计设备1、硬件:PC机、SOPC-NIOS II EDA/SOPC系统开发平台2、软件:QUARTUS II、SOPC Builder、NIOS II ID E三、设计内容•初始状态为红灯(LED2)熄灭,绿灯(LED1)点亮,数码管显示为0。
•当按键按下,红灯(LED2)闪烁,绿灯(LED1)熄灭,同时蜂鸣器响起,数码管开始倒计时9S,此状态持续时间为9s。
•9s后,恢复初始状态。
四、设计步骤1、使用Quartus II建立一个工程文件和顶层文件;2、使用SOPC Builder建立一个简单Nios II硬件系统1)启动SOPC Builder2)指定目标FPGA3)添加NiosII内核及其他外设A、添加NiosII、SRAM、JTAG-UART、Avalon总线的I P核B、添加一个2位的输入型PIO作为按键keyC、添加两个1位的输出型PIO作为 led1及led2的输出端口D、添加一个1位的输出型PIO作为蜂鸣器的输入端口AE、添加一个3位的输出型PIO作为数码管的位选selF、添加一个8位的输出型PIO作为数码管的段选dat4)指定基地址和中断优先级5)设置NiosII复位和异常地址6) 编译生成NiosII系统SOPC Builder行程图如下:3、在Quartus II中建立一个蜂鸣器1)用VHDL语言编写蜂鸣器程序2)编译成功后Creat symbol,生成Project sing4、在Quartus II中编译Nios II硬件系统并生成配置文件1)在Quartus II加入Nios II系统符号到顶层文件2)给各端口加入输入输出引脚,并重命名3)设置参数4)编译顶层文件5)分配管脚6)再次编译5、在Nios II IDE中建立C/C++工程,编写用户程序6、编译用户程序7、下载.SOF至FPGA,运行程序,观察结果五、设计程序蜂鸣器程序(VHDL):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sing1 ISPORT(CLK:IN STD_LOGIC;p:IN STD_LOGIC;-- DIGIT:BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);SPEAKER:OUT STD_LOGIC);END ENTITY;ARCHITECTURE SONG OF sing1 ISSIGNAL DRIVER,ORIGIN:STD_LOGIC_VECTOR(12 DOWNTO 0); SIGNAL COUNTER:INTEGER RANGE 0 TO 140;SIGNAL COUNTER1:INTEGER RANGE 0 TO 3;SIGNAL COUNTER2:INTEGER RANGE 1 TO 10000000; SIGNAL DIGIT :STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL COUNT :STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL CARRIER,CLK_4MHZ,CLK_4HZ:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK='1' THENIF COUNTER1=1 THEN CLK_4MHZ<='1';COUNTER1<=2;ELSIF COUNTER1=3 THEN CLK_4MHZ<='0';COUNTER1<=0;ELSE COUNTER1<=COUNTER1+1;END IF;IF COUNTER2=5000000 THEN CLK_4HZ<='1';COUNTER2<=5000001;ELSIF COUNTER2=10000000 THEN CLK_4HZ<='0';COUNTER2<=1;ELSE COUNTER2<=COUNTER2+1;END IF;END IF;END PROCESS;PROCESS(CLK_4MHZ)BEGINIF CLK_4MHZ'EVENT AND CLK_4MHZ='1' THEN IF DRIVER="1111111111111"THENCARRIER<='1';DRIVER<=ORIGIN;ELSEDRIVER<=DRIVER+1;CARRIER<='0';END IF;END IF;END PROCESS;PROCESS(CARRIER)BEGINif(p='1')thenIF CARRIER'EVENT AND CARRIER='1' THEN COUNT<=COUNT+1;IF COUNT="00"THENSPEAKER<='1';ELSESPEAKER<='0';END IF;END IF;end if;END PROCESS;PROCESS(CLK_4HZ)BEGINIF CLK_4HZ'EVENT AND CLK_4HZ='1' THEN IF COUNTER=140 THENCOUNTER<=0;ELSE COUNTER<=COUNTER+1;END IF;END IF;CASE COUNTER ISWHEN 2 =>DIGIT<="0000011"; WHEN 3 =>DIGIT<="0000011"; WHEN 4 =>DIGIT<="0000101"; WHEN 5 =>DIGIT<="0000101"; WHEN 6 =>DIGIT<="0000101"; WHEN 7 =>DIGIT<="0000110"; WHEN 8 =>DIGIT<="0001000"; WHEN 9 =>DIGIT<="0001000"; WHEN 10 =>DIGIT<="0001000"; WHEN 11 =>DIGIT<="0010000"; WHEN 12 =>DIGIT<="0000110"; WHEN 13 =>DIGIT<="0001000"; WHEN 14 =>DIGIT<="0000101"; WHEN 15 =>DIGIT<="0000101"; WHEN 16 =>DIGIT<="0101000"; WHEN 17 =>DIGIT<="0101000"; WHEN 18 =>DIGIT<="0101000"; WHEN 19 =>DIGIT<="1000000"; WHEN 20 =>DIGIT<="0110000"; WHEN 21 =>DIGIT<="0101000"; WHEN 22 =>DIGIT<="0011000"; WHEN 23 =>DIGIT<="0101000"; WHEN 24 =>DIGIT<="0010000"; WHEN 25 =>DIGIT<="0010000"; WHEN 26 =>DIGIT<="0010000"; WHEN 27 =>DIGIT<="0010000"; WHEN 28 =>DIGIT<="0010000"; WHEN 29 =>DIGIT<="0010000"; WHEN 30 =>DIGIT<="0000011"; WHEN 31 =>DIGIT<="0000000"; WHEN 32 =>DIGIT<="0010000"; WHEN 33 =>DIGIT<="0010000"; WHEN 34 =>DIGIT<="0010000"; WHEN 35 =>DIGIT<="0011000"; WHEN 36 =>DIGIT<="0000111"; WHEN 37 =>DIGIT<="0000111"; WHEN 38 =>DIGIT<="0000110"; WHEN 39 =>DIGIT<="0000110"; WHEN 40 =>DIGIT<="0000101"; WHEN 41 =>DIGIT<="0000101"; WHEN 42 =>DIGIT<="0000101"; WHEN 43 =>DIGIT<="0000110";WHEN 46 =>DIGIT<="0010000"; WHEN 47 =>DIGIT<="0010000"; WHEN 48 =>DIGIT<="0000011"; WHEN 49 =>DIGIT<="0000011"; WHEN 50 =>DIGIT<="0001000"; WHEN 51 =>DIGIT<="0001000"; WHEN 52 =>DIGIT<="0000110"; WHEN 53 =>DIGIT<="0000101"; WHEN 54 =>DIGIT<="0000110"; WHEN 55 =>DIGIT<="0001000"; WHEN 56 =>DIGIT<="0000101"; WHEN 57 =>DIGIT<="0000101"; WHEN 58 =>DIGIT<="0000101"; WHEN 59 =>DIGIT<="0000101"; WHEN 60 =>DIGIT<="0000101"; WHEN 61 =>DIGIT<="0000101"; WHEN 62 =>DIGIT<="0000101"; WHEN 63 =>DIGIT<="0000101"; WHEN 64 =>DIGIT<="0011000"; WHEN 65 =>DIGIT<="0011000"; WHEN 66 =>DIGIT<="0011000"; WHEN 67 =>DIGIT<="0101000"; WHEN 68 =>DIGIT<="0000111"; WHEN 69 =>DIGIT<="0000111"; WHEN 70 =>DIGIT<="0010000"; WHEN 71 =>DIGIT<="0010000"; WHEN 72 =>DIGIT<="0000110"; WHEN 73 =>DIGIT<="0001000"; WHEN 74 =>DIGIT<="0000101"; WHEN 75 =>DIGIT<="0000101"; WHEN 76 =>DIGIT<="0000101"; WHEN 77 =>DIGIT<="0000101"; WHEN 78 =>DIGIT<="0000101"; WHEN 79 =>DIGIT<="0000101"; WHEN 80 =>DIGIT<="0000011"; WHEN 81 =>DIGIT<="0000101"; WHEN 82 =>DIGIT<="0000011"; WHEN 83 =>DIGIT<="0000011"; WHEN 84 =>DIGIT<="0000101"; WHEN 85 =>DIGIT<="0000110"; WHEN 86 =>DIGIT<="0000111"; WHEN 87 =>DIGIT<="0010000";WHEN 90 =>DIGIT<="0000110"; WHEN 91 =>DIGIT<="0000110"; WHEN 92 =>DIGIT<="0000110"; WHEN 93 =>DIGIT<="0000110"; WHEN 94 =>DIGIT<="0000101"; WHEN 95 =>DIGIT<="0000110"; WHEN 96 =>DIGIT<="0001000"; WHEN 97 =>DIGIT<="0001000"; WHEN 98 =>DIGIT<="0001000"; WHEN 99 =>DIGIT<="0010000"; WHEN 100=>DIGIT<="0101000"; WHEN 101=>DIGIT<="0101000"; WHEN 102=>DIGIT<="0101000"; WHEN 103=>DIGIT<="0011000"; WHEN 104=>DIGIT<="0010000"; WHEN 105=>DIGIT<="0010000"; WHEN 106=>DIGIT<="0011000"; WHEN 107=>DIGIT<="0010000"; WHEN 108=>DIGIT<="0001000"; WHEN 109=>DIGIT<="0001000"; WHEN 110=>DIGIT<="0000110"; WHEN 111=>DIGIT<="0000101"; WHEN 112=>DIGIT<="0000011"; WHEN 113=>DIGIT<="0000011"; WHEN 114=>DIGIT<="0000011"; WHEN 115=>DIGIT<="0000011"; WHEN 116=>DIGIT<="0001000"; WHEN 117=>DIGIT<="0001000"; WHEN 118=>DIGIT<="0000110"; WHEN 119=>DIGIT<="0001000"; WHEN 120=>DIGIT<="0000110"; WHEN 121=>DIGIT<="0000011"; WHEN 122=>DIGIT<="0000011"; WHEN 123=>DIGIT<="0010000"; WHEN 124=>DIGIT<="0000011"; WHEN 125=>DIGIT<="0000101"; WHEN 126=>DIGIT<="0000110"; WHEN 127=>DIGIT<="0001000"; WHEN 128=>DIGIT<="0000101"; WHEN 129=>DIGIT<="0000101"; WHEN 130=>DIGIT<="0000101"; WHEN 131=>DIGIT<="0000101";WHEN 134=>DIGIT<="0000101"; WHEN 135=>DIGIT<="0000101"; WHEN 136=>DIGIT<="0000000"; WHEN 137=>DIGIT<="0000000"; WHEN 138=>DIGIT<="0000000"; WHEN 139=>DIGIT<="0000000"; WHEN OTHERS=>DIGIT<="0000000";END CASE;CASE DIGIT ISWHEN "0000011"=>ORIGIN<="0100001001100";WHEN "0000101"=>ORIGIN<="0110000010001";WHEN "0000110"=>ORIGIN<="0111000111110";WHEN "0000111"=>ORIGIN<="1000000101101";WHEN "0001000"=>ORIGIN<="1000100010001";WHEN "0010000"=>ORIGIN<="1001010110010";WHEN "0011000"=>ORIGIN<="1010000100101";WHEN "0101000"=>ORIGIN<="1011000001000";WHEN "0110000"=>ORIGIN<="1011100011110";WHEN "1000000"=>ORIGIN<="1100010001000";WHEN OTHERS=>ORIGIN<="1111111111111";END CASE;END PROCESS;END SONG;警示灯总程序:#include <stdio.h>#include <sys/unistd.h>#include <io.h>#include <string.h>#include "system.h"#include "altera_avalon_pio_regs.h"#include "alt_types.h"#include "sys/alt_irq.h"int num;static void Button_ISR_Init(void);static void Button_Irq_Handler(void* context,alt_u32 id);alt_u8 segtab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9段码static void display(int num);//按键初始化static void Button_ISR_Init(void){IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_BASE,0xff); //允许8个按键中断IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0); //清除中断标志寄存器alt_irq_register(KEY_IRQ,NULL,Button_Irq_Handler); //注册中断}static void display(int num){IOWR_ALTERA_AVALON_PIO_DATA(SEL_BASE,0); //数码管位选IOWR_ALTERA_AVALON_PIO_DATA(DAT_BASE,segtab[num]); //显示倒计时usleep(1000);}/*------------------------------------------------------------------***********************按键中断处理函数*****************************-----------------------------------------------------------------*/static void Button_Irq_Handler(void* context,alt_u32 id){int i;for(i=0;i<9;i++){num=9-i;display(num);IOWR_ALTERA_AVALON_PIO_DATA(A_BASE, 1);//蜂鸣器响起IOWR_ALTERA_AVALON_PIO_DATA(LED1_BASE, 0);IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE, 1);usleep(500000);IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE, 0);usleep(500000);}IOWR_ALTERA_AVALON_PIO_DATA(A_BASE, 0);//蜂鸣器关闭IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0);num=0;display(num);}int main(void){printf("Begin!\n");Button_ISR_Init(); //按键中断初始化while(1){usleep(100000);IOWR_ALTERA_AVALON_PIO_DATA(LED1_BASE, 1);IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE, 0);num=0;display(num);}return 0;}六、设计结果按键未按下时,处于初始状态:LED1亮,LED2灭,数码管显示为0,蜂鸣器未启动;按键按下之后,LED1灭,LED2闪烁,数码管进入9秒倒计时并且蜂鸣器响;9秒后恢复初始状态。
EDA课程设计报告--倒计时
课程设计报告课程名称EDA课题名称倒计时专业自动化年级09级学号姓名1)课题的主要功能设计一个100秒倒计时,用两位数码管显示,用两个拨码开关分别当做RST,EN用来控制时钟的复位和使能,倒计时完后,蜂鸣器鸣笛。
2)功能模块的划分图1 倒计时功能模块图该倒计时分为四个模块,分别为:计数器分频模块、十进制减法计数器模块、数码管动态显示模块、分频器模块。
3)主要功能的实现3.1、计数器分频功能计数器分频COUNTER如图2模块所示,计数器分频到0-22次,最后分出来的COUT[22]时间是0.8秒,近似于1秒。
3.2、十进制减法计数器功能十进制减法计数器模块DSQSHI如图4模块所示,CLK为计数时钟,RST 为1时,数码管上显示00,RST为0时EN为1时计数开始,每10个数,COUT 输出一个1。
3.3、数码管动态显示功能数码管动态显示模块SMGM如图5模块所示,每一个数码管都有一个对应的CLK10到CLK9,CLK为数码管的扫描周期接COUT[10],SG接数码管的段码,BT接数码管的位码。
3.4、分频功能分频器模块FPQ如图3模块所示,对机器中自带的时钟频率进行分频由50MHZ分到10MHZ。
图2 COUNTER模块图3 FPQ模块图4 DSQSHI模块图5 SMGM模块4)各模块连接在一起最终图形解释:用COUT[22]当第一个十进制的CLK用这个十进制减法计数器当做秒钟的个位,然后用第一个十进制计数器的COUT当做第一个十进制减法计数器的CLK,用这个十进制减法计数器当做秒钟的十位,所有的计数器的RST和EN 接在一起,实现同时复位和使能。
用的是数字电路的知识让小时在24的时候复位,将小时的个位计数器的CQ引出COUT1[3..0],然后0是0000在COUT1[3]到COUT[0]接四个非门,然后将4位接与门,将小时的十位计数器的CQ引出COUT2[3..0],然后0是0000在COUT[3]到COUT[0]接四个非门,然后将4位接与门,将两个与门接与门,再将最后一个与门与蜂鸣器相与,则在倒计时为00时蜂鸣器就会鸣笛。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SOPC/EDA综合课程设计报告设计题目:综合计时系统设计者:学号:班级:指导老师:完成时间:目录1设计总说明 (2)1.1系统设计要求 (3)2综合计时系统设计与分析 (4)2.1 综合计时模块: (4)2.1.1单时钟电路构想 (4)2.1.2显示控制电路的设计 (7)2.1.3调整控制电路TZKZQ的设计 (10)2.2 系统单元仿真与分析 (11)2.2.1综合计时电路的仿真 (11)2.2.2调整控制电路的仿真 (12)2.2.3显示控制电路的仿真 (13)3外围电路设计 (14)3.1 直流稳压电源设计电路图 (14)3.2 显示电路的设计 (15)4收获与体会 (16)4.1 改进方法 (16)4.2 体会 (16)5设计参考资料 (18)6附录————程序段 (19)6.1 CONT60计时电路的VHDL源程序 (19)6.2 CONT30计时电路的VHDL源程序 (19)6.3 显示控制电路XSKZQ的VHDL源程序 (21)6.4 调整控制电路TZKZQ的VHDL源程序 (26)1设计总说明计时系统对现代人们生活学习工作等各方面有着巨大的作用,从以前的时钟、手表到至今,计时系统已经发展成为普遍性,综合性,简便性。
如何用更简单、可靠的原理,更轻便、廉价的设备,更精确、综合的计时,来设计电子计时器,是此设计的研究目的。
随着现代电子产品正以前所未有的高速度,向着功能多样化、体积最小化、功耗最低化迅速发展,如何提高产品性能,缩小产品体积,降低产品功耗,是对现代电子产品的基本要求,而EDA ,即电子设计自动化技术,正是为了适应现代电子产品的设计要求,伴随着计算机、集成电路、电子系统设计的发展,吸收数据库、图形学、图论与拓扑逻辑、计算数学、优化理论等多学科最新成果而逐步形成的一门新技术。
它以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑期间的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑简化、逻辑映射、编程下载等工作等。
采用EDA 技术进行综合计时系统的设计,可让计时系统达到精确,简易,可靠,省能。
EDA 技术设计电子产品,已成为当今电子研发行业的主流,它可提高电子设计自动化程度,缩短开发周期,提高产品的竞争力。
本设计选用Altera 公司的FLEX10K 系列芯片,该芯片采用5V 的工作模式,由Altera 公司的MAXplus2开发系统提供软件支持,以硬件描述语言VHDL 为系统逻辑描述的主要表达方式,设计了一个综合计时系统。
1.1系统设计要求设计一个综合性的计时系统,要求能实现年、月、日、时、分、秒及星期的计数等综合计时功能,同时将计时结果通过15个七段数码管显示,并且可通过两个设置键,对计时系统的有关参数进行调整。
具体系统功能面板如图1所示。
图1系统功能面板年月日星期模式调整年月日时分秒星期2综合计时系统设计与分析2.1 综合计时模块:计时模块又可分七个小模块,有计秒模块,计分模块,计时模块,计日模块,计月模块,计年模块,计星期模块,用于完成各种计时的功能。
其中,计秒电路的输入时钟周期为1秒,计分电路的输入时钟为计秒电路的输出进位,如此类推下去,构成每个计时模块之间的联系。
而计日模块又略有不同,因为每个月的日数受年份,月份影响,所以要输入当前的年份月份来判断是否闰年,是否大月,才可以实现准确的计时。
调整控制电路则用于调整计时系统的有关参数,通过两个按键来对系统的参数进行修改,在修改过程中,对应的修改计时模块通过相应的灯点亮来表示数据正待输入。
显示控制电路用于完成计时结果的显示控制及显示译码等功能然后通过15个七段数码管显示出来。
同时,设计了相应的外围电路,因为家庭用的都是220V的交流电压,所以可通过整流,滤波,稳压,产生5V和12V电压的直流稳压电路,5V的电压供给FLEX10K芯片,而12V电压供给产生1KHz频率的方波信号源电路,还有显示数码管驱动电路,用于15个数码管的显示驱动,还有8个LED显示灯,表示当前调整模式的选择状况,两个点动式按键用于调整数据时的模式选择和数据修改。
关键词:EDA;FLEX10K系列芯片;VHDL硬件描述语言;计时模块;显示块;调整模块;外围电路。
2.1.1单时钟电路构想数字钟以其显示时间的直观性、走时准确性而受到了人们的欢迎并很快走进了千家万户。
作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。
数字钟的基本原理方框图如下:图2 数字钟原理方框图时基T产生电路由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz的、非常稳定的计数时钟脉冲。
控制逻辑电路产生调时、调分信号及位选信号。
调时、调分信号的产生:由计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。
现在我们把电路稍做变动:把秒计数器的进位脉冲和一个频率为2Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。
调节小时的时间也一样的实现。
计数显示电路由计数部分、数据选择器、译码器组成,是时钟的关键部分。
计数部分:由两个60进制计数器和一个12/24进制计数器组成,其中60进制计数器可用6进制计数器和10进制计数器构成;24进制的小时计数同样可用6进制计数器和10进制计数器得到:当计数器计数到24或晚上12时,“2”和“4”(或“1”和“2”)同时进行清零,则可实现24/12进制计数。
数据选择器:因为本实验用到了6个动态扫描数码管,数据的选择输出是由输出相应的选择位完成的,故需要提供扫描输出程序。
图3 自顶向下设计分割图CNT60计数模块是一个多用计时模块,它既可作为计秒电路调用,又可作为计分电路、计时电路调用。
图4是其输入、输出端口图。
其中,输入信号LD为置数控制信号,低电平有效;输入信号CLK为计数时钟信号;输入信号DATA为待预置数;输出信号NUM为计数结果;输出信号CO为计数溢出信号。
图4 CNT60计数模块输入、输出端口图CNT60的主要VHDL程序段如下:IF(LD='0') THENNUM<=DATA;ELSIF CLK'EVENT AND CLK='1' THENIF NUM="111011" THEN --59NUM<="000000";CO<='1';ELSENUM<=NUM+1;CO<='0';END IF;END IF;图5 CNT30计数模块的输入、输出端口图CNT30的主要VHDL程序段如下:IF(LD='0') THENNUM<=DATA;ELSIF CLK'EVENT AND CLK='1' THENMAX_DAYS<=TOTAL_DAYS;IF NUM=TOTAL_DAYS THEN --99NUM<="00001";CO<='1';ELSENUM<=NUM+1;CO<='0';END IF;END IF;2.1.2显示控制电路的设计本设计显示需要使用的是15个七段显示数码管。
在计时结果显示电路中,七段数码管显示部分是一个不容忽视的环节,如若处理不得当,可能引起系统功率过大,产生散热问题,严重时甚至会导致系统的烧毁。
为了解决好以上问题,下面就对七段数码管显示电路做简要的分析和介绍通常点亮一个LED所需的电流是5~50 mA,通电的电流愈大,LED的亮度愈高,相对的也会使其寿命缩短。
一般以10 mA的导通电流来估算它所必须串联的阻值,其计算方式参考图6所示。
图6 单个LED的串接电阻计算方式七段显示器可分为共阳极、共阴极型两种,它们都可以等效成8个LED的连接电路,其中图7就是共阴极型七段显示器的等效电路和每节LED的定义位置图。
图7 共阴极型七段显示器根据以上设计思想,本系统的数据显示电路可分为两个子模块:(1) 显示控制电路XSKZQ:负责完成数据选择扫描及数码管位选择信号的产生,数据扫描选择输出,对于选择的数据进行BCD码转换等功能;(2) 显示译码电路:将用于显示的BCD码数据进行译码。
XSKZQ的输入、输出端口如图8所示。
其中,输入信号CLK_SCAN为用于产生数据选择扫描等控制信号的时钟信号;输入信号SEC、MIN、HOUR、DAY、MON、YEAR、WEEK分别来自计秒电路、计分电路、计时电路、计日电路、计月电路、计年电路、计星期电路等计时电路的计时结果输出端;输出信号BCD为被选择进行显示的计秒/计分/计时/计日/计月/计年/计星期电路等计时电路的计时结果的8位BCD码,输出端SELOUT经外部的3-8译码电路译码后用于选择对应计时结果显示数码管的公共端COM。
图8 XSKZQ的输入、输出端口图图9为15个共阴极型七段数码管驱动接线图SM14SM13SM12SM3SM2SM1SM0图9 15个共阴极型七段数码管驱动接线图2.1.3调整控制电路TZKZQ 的设计对于系统中的时间调整电路,拟通过模式和调整两个外部按键完成。
模式按键负责切换正常时间计数模式和时间调整模式,调整模式切换顺序如图10所示。
调整键负责在时间调整模式之下,对当前模式的计时结果进行调整。
图10 调整模式切换顺序对于系统中的时间调整电路,拟通过模式和调整两个外部按键完成。
模式键负责切换正常时间计数模式和时间调整模式,调整模式切换顺序如图10所示。
调整键负责在时间调整模式之下,对当前模式的计时结果进行调整。
TZKZQ 模块是负责各个模块之间的相互切换以及对被选中的模式进行时间调整的。
图11是其输入、输出端口图。
图11 TZKZQ 的输入、输出端口图2.2 系统单元仿真与分析各部分模块完成后,用QUARTUS Ⅱ对程序进行编译仿真,以得到相应的仿真波形。
2.2.1综合计时电路的仿真CNT60.VHD模块仿真波形如下:图12 CNT60.VHD模块仿真图从图12可以看出,CNT60.VHD实现了从0到59的循环计数,每实现一次59到0的计数动作,计数模块输出一个进位信号。