版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数码管显示与控制功能目录一: 设备简介1:SOPC简介2:CPLD简介3:软件介绍二:设计原理三: 主要内容1、无选位的3位显示2、带选位的3位数码管稳定显示3、带有清零和暂停的3位数码管计数(最终功能)四:总结和体会一: 设备简介I:SOPC简介SOPC(System On Programmable Chip)即可编程的片上系统,或者说是基于大规模FPGA的单片系统。SOPC的设计技术是现代计算机辅助设计技术、EDA技术和大规模集成电路技术高度发展的产物。SOPC技术是将尽可能大而完整的电子系统,包括嵌入式处理器系统、接口系统、硬件协处理器或加速系统、DSP系统、数字通信系统、存储电路以及普
2、通数字系统等,在单一FPGA中嵌入实现。大量采用IP复用、软硬件协同设计、自顶向下和自底向上混合设计的方法,边设计、边调试、边验证原本需要写上几千行的VHDL代码的功能模块,通过嵌入IP核后,只需几十行C代码即可实现。因此,可以使得整个设计在规模、可靠性、体积、功耗、功能、性能指标、上市周期、开发成本、产品维护及其硬件升级等多方面实现最优化。 传统的设计技术已经很难满足系统化、网络化、高速度、低功耗、多媒体等实际需求,SOPC(片上可编程系统)可将处理器、存储器、外设接口和多层次用户电路等系统设计需要的功能模
3、块集成到一块芯片上,因其灵活、高效、设计可重用特性,已经成为集成电路未来的发展方向,广泛应用到汽车、军事、航空航天、广播、测试和测量、消费类电子、无线通信、医疗、有线通信等领域。 SOPC技术是一门全新的综合性电子设计技术,涉及面广。因此在知识构成上对于新时代嵌入式创新人才有更高的要求,除了必须了解基本的EDA软件、硬件描述语言和FPGA器件相关知识外,还必须熟悉计算机组成与接口、汇编语言或C语言、DSP算法、数字通信、嵌入式系统开发、片上系统构建与测试等知识。显然,知识面的拓宽必然推动电子信息及工程类各学科
4、分支与相应的课程类别间的融合,而这种融合必将有助于学生的设计理念的培养和创新思维的升华。II:CPLD简介CPLD(Complex Programmed Logical Device)直接翻译就是复杂可编程逻辑器件。CPLD进行一次下载编程(写入操作)后,其逻辑门组合方式就保存下来,不管什么时候断电,通电,他都可以执行上一次的逻辑功能;CPLD更适合完成各种组合逻辑;CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,CPLD通过修改具有固定内连电路的逻辑功能来编程, 在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不
5、丢失。CPLD又可分为在编程器上编程和在系统编程两类;CPLD保密性好。III:软件介绍这次所作课题所用的软件是Quartus II,Quartus软件包是MAX+plus的升级版本,Altera公司的第四代开发软件。其提供了一个完整高效的设计环境,非常适应具体的设计需要。Quartus提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。能够支持逻辑门数在百万门以上的逻辑器件的开发,并且为第三方工具提供了无缝接口。Quartus支持的器件有:Stratix 、Stratix GX、Stratix、Mercury、MAX3000A、MAX 7000B、MAX 7000S、MAX 7000A
6、E、MAX 、FLEX6000、FLEX10K、FLEX10KA、FLEX10KE、Cyclone、Cyclone 、APEX 、APEX20KC、APEX20KE和ACEX1K系列。Quartus软件包的编程器是系统的核心,提供功能强大的设计处理,设计者可以添加特定的约束条件来提高芯片的利用率。在设计流程的每一步,Quartus软件能够引导设计者将注意力放在设计上,而不是软件的使用上。同时,自动的错误定位、完备的错误和警告信息,使设计修改变得简单容易。另外,Quartus可与MATLAB的Simulink和DSP Builder结合,是开发DSP硬件系统的关键EDA工具,Quartus与SO
7、PC Builder结合,能够开发SOPC(System On a Programmable Chip)系统,是一款很有发展前途的EDA软件。二:设计原理 此次的课题是:以CPLD电路为核心,实现数码管显示与控制功能;我们所制定的主要功能是显示3位的数码管计数,并且带有清零和暂停功能。 首先,我们要让数码管计数一定要有一个计数信号,我们想让数码管1秒计一次,那它的频率就应该为1HZ。但是这个信号不能直接得到,只能通过分频来得到;我们是通过Interface B中的场频信号vVref来分频得到的。其次,我们做的是动态扫描,就是一位位地轮流点亮各位显示器(扫描),对于每一位显示器来说,每隔一段时间
8、电量一次,因此,我们还要一个选位信号,我们知道人眼的临界闪烁频率是50HZ,现在我们做的是3位计数,所以位选信号只要高于150HZ,我们人眼就不会感受到闪烁的现象。因此,我们选择了Interface B中的行频信号vHref,因为它的频率是25KHZ,它高于150HZ,所以我们没有选择分频直接用它来产生位选信号。我们进行编程的时候,我们不是直接就来编最后的3位有选位的计数。我们第一个编的是没有选位选信号的计数,我们直接将位选信号seg_c1、seg_c2、和seg_c3置零;实现的最基本的功能就是能让3个数码管同时一起计数,也就是3个数码管同时从0开始加一计数,到了9再变成0。我们第二个编程的
9、是有了选位信号,但是没有把计数的功能加进去,直接把要显示的数字送到数码管seg,实现的功能就是显示稳定的数字。我们最后编程的是把前面两个功能联合起来,就是显示稳定的3位数码管计数,然后再加上了清零和暂停的功能。三: 主要内容1、无选位的3位显示 第一次进行的编程就是无选位的3位数码管显示,就是直接将seg_c1、seg_c2、和seg_c3置零;因此,我们只需要一个计数信号,我们是用原先较高频率的场频来进行分频得到计数信号count_in(1HZ)。 模块和程序如下: p0: process(vVREF) begin if (vVREF'event and vVREF='1
10、39; ) then 场频是20ms,所以只要计50就可以得到 count为1S。 if(count_in<49) then count_in<=count_in+1; else count<=not count; count_in<=0; end if; end if; end process;p1: process(count,key) begin if key="1101" then temp<="0000" seg<="01111110" elsif( count'event and
11、 count='1') then case temp is when"0000"=>seg<="01111110" 采用的是共阴,所以”1”电平有效 when"0001"=>seg<="00001100" when"0010"=>seg<="10110110" when"0011"=>seg<="10011110" when"0100"=>seg&
12、lt;="11001100" when"0101"=>seg<="11011010" when"0110"=>seg<="11111010" when"0111"=>seg<="00001110" when"1000"=>seg<="11111110" when"1001"=>seg<="11011110" when
13、others=>seg<="11111111"end case; if temp="1001" then temp<="0000" else temp<=temp+1; end if; end if; end process ;2、带选位的3位数码管稳定显示 我们采用的是动态扫描,并且;利用的是数码管的共阴原理。 首先要有一个位选信号,我们选用的是行频vHerf,用它来产生位选信号不会产生闪烁感,超过了人眼的临界闪烁频率。p1:process(vHREF) begin if (vHREF='1'
14、 and vHREF'event) then 3个数码管,先得到状态位weixuan,分别位0,1,2时选中个位,十位和百位。 if weixuan<2 then (即产生动态扫描的分频) weixuan<=weixuan+1; else weixuan<=0; end if; end if;end process p1;p2: process(weixuan) 动态扫描,weixuan为0时个位计数,此时ztai=“110”,即seg_c3=0,seg_c2=1,seg_c1= 1; 以此类推。begin case weixuan is when 0=>zta
15、i<="110" when 1=>ztai<="101" when 2=>ztai<="011" when others=>ztai<="111" end case;end process p2;p3: process(weixuan) begin case weixuan iswhen 0=>seg<="00001100" when 1=>seg<="11111110"when 2=>seg<=&
16、quot;11011010"when others=>seg<="00000000"end case;end process p3;3、带有清零和暂停的3位数码管计数(最终功能)我们把由场频vVref分频得到的计数信号counter(1HZ)和由行频vHref分频得到的选位状态信号weixuan(3个状态,分别0、1、2)都作为内部信号。计数信号counter做为时钟进行加一计数,通过位选信号ztai来选中哪一位计数并利用动态显示原理在3位LED数码管上无闪烁稳定地显示每秒加一的计数功能。 得计数信号: p0:process(clkin) -分频(得计
17、数信号count 为1HZ) begin if (clkin='1' and clkin'event) then clkin为场频vVref if counter_in<49 then counter_in<=counter_in+1; else counter_in<=0; count<= not count; end if; end if;end process;得选位信号:p1:process(clkin2) begin if (clkin2='1' and clkin2'event) then clkin2行频vH
18、ref if weixuan<2 then weixuan<=weixuan+1; else weixuan<=0; end if; end if;end process p1;p2: process(weixuan) begin case weixuan is when 0=>ztai<="110" when 1=>ztai<="101" when 2=>ztai<="011" when others=>ztai<="111" end case;e
19、nd process p2;计数过程:p3: process(count,key) begin if key="1110" then 第一排键清零,第二排键暂停。 shuzi1<="0000" seg1<="01111110" elsif key="1101" then seg1<=seg1; elsif( count'event and count='1') then case shuzi1 is when"0000"=>seg1<=&qu
20、ot;01111110" 个位计数 when"0001"=>seg1<="00001100" when"0010"=>seg1<="10110110" when"0011"=>seg1<="10011110" when"0100"=>seg1<="11001100" when"0101"=>seg1<="11011010" wh
21、en"0110"=>seg1<="11111010" when"0111"=>seg1<="00001110" when"1000"=>seg1<="11111110" when"1001"=>seg1<="11011110" when others=>seg1<="11111111" end case; if shuzi1="1001"
22、 then shuzi1<="0000" else shuzi1<=shuzi1+1; end if; end if; end process p3;p4: process(count,key) begin if key="1110" then shuzi2<="0000" seg2<="01111110" elsif key="1101" then seg2<=seg2; elsif( count'event and count='1')
23、then case shuzi2 is when"0000"=>seg2<="01111110" 十位计数 when"0001"=>seg2<="00001100" when"0010"=>seg2<="10110110" when"0011"=>seg2<="10011110" when"0100"=>seg2<="11001100"
24、when"0101"=>seg2<="11011010" when"0110"=>seg2<="11111010" when"0111"=>seg2<="00001110" when"1000"=>seg2<="11111110" when"1001"=>seg2<="11011110" when others=>seg2<=
25、"11111111" end case; if (shuzi1="1001" and shuzi2/="1001") then shuzi2<=shuzi2+1; elsif(shuzi1="1001" and shuzi2="1001") then shuzi2<="0000" end if; end if; end process p4;p5: process(count,key) begin if key="1110" then shuz
26、i3<="0000" seg3<="01111110" elsif( count'event and count='1') then case shuzi3 is when"0000"=>seg3<="01111110" 百位计数 when"0001"=>seg3<="00001100" when"0010"=>seg3<="10110110" when"
27、0011"=>seg3<="10011110" when"0100"=>seg3<="11001100" when"0101"=>seg3<="11011010" when"0110"=>seg3<="11111010" when"0111"=>seg3<="00001110" when"1000"=>seg3<=&
28、quot;11111110" when"1001"=>seg3<="11011110" when others=>seg3<="11111111" end case; if (shuzi1="1001" and shuzi2="1001" and shuzi3/="1001")then shuzi3<=shuzi3+1; elsif(shuzi1="1001" and shuzi2="1001"
29、and shuzi3="1001") then shuzi3<="0000" end if;end if; end process p5;p6: process(weixuan,seg1,seg2,seg3) begin case weixuan is when 0=>seg<=seg1; when 1=>seg<=seg2; when 2=>seg<=seg3; when others=>seg<="00000000" end case;end process p6;四:总结和体会 这次的工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版2025年度婚前财产分割及婚姻生活保障协议书集锦3篇
- 2024版物业管理项目委托合同
- 二零二五年度驾校食堂与宿舍楼施工合同2篇
- 2024版租房子合同
- 二零二五年度航空航天企业高级工程师聘用服务协议3篇
- 二零二五年度国画修复与保养服务合同3篇
- 二零二五年度物流园区仓储配送承包合同3篇
- 二零二五年度环保橱柜生产与销售合作协议3篇
- 小型零星工程合同范本
- 自卸运输船租赁合同
- 学校2025年寒假特色实践作业综合实践暨跨学科作业设计活动方案
- 2024数据资源采购及运营管理合同3篇
- 人教版小学数学一年级上册20以内加减混合口算练习题全套
- 儿童青少年行为和情绪障碍的护理
- 自升式塔式起重机安装与拆卸施工方案
- 山东省技能大赛青岛选拔赛-世赛选拔项目20样题(数字建造)
- 人居环境整治合同书
- 2025届上海市徐汇、松江、金山区高一物理第一学期期末学业水平测试试题含解析
- 幼儿园意识形态风险点排查报告
- 催收培训制度
- 学习布莱尔盲文用积木相关项目实施方案
评论
0/150
提交评论