第一篇:EDA课程 跑马灯设计
EDA目录
第一章 设计思路.................................................................................................................................................1 第二章 子模块......................................................................................................................................................2 2.1 分频器....................................................................................................................................................2 2.2 显示模式模块.......................................................................................................................................3 2.3 显示LED灯模块..................................................................................................................................5 第三章 调试及结果............................................................................................................................................6 3.1顶层原理图............................................................................................................................................6 第四章 体会..........................................................................................................................................................7
第一章 设计思路
在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,以及平时实验的具体操作内容,利用硬件描述语言HDL,EDA软件QuartusⅡ和硬件平台cycloneⅡFPGAJ进行一个简单的电子系统设计,本次试验我所完成的内容是跑马灯的设计,下面我简单的进行一下原理的阐述。
跑马灯课程设计的要求是控制8个LED进行花样显示,设计四种显示模块:第一种显示是从左向右逐个点亮LED。第二种显示:从右向左逐个点亮LED。第三种显示:从两边向中间逐个点亮LED。第四种显示:从中间到两边逐个点亮LED。四种显示模式循环切换,并带有一位复位键控制系统的运行停止。为了完成要求的效果显示,由于要求比较简单,所以不用分为很多模块来具体控制,所以我先择利用赋值语句来完成灯的点亮,根据了解我们实验箱上的LED灯属于共阴极接法,当给于高电平时点亮,那么当我们需要点亮某位LED灯时,只需在该位上赋予高电平即可,比如:如果我们要实现8个数码灯从左到右依次点亮,那么我们就可以给这8个数码灯分别赋值10000000,经过一段时间的延时后再给其赋值01000000,再经过一段时间延时后再给其赋值00100000,依次类推,则最后一种赋值状态为00000001,这样就得到了相应的现象。同理,要实现数码灯从右向左依次点亮,从中间向两端依次点亮,从两端向中间依次点亮都可以采用这样赋值的方法。在延时的程序编写的过程中,我们采用计数时钟脉冲个数的方式来实现。结合具体程序来说就是,在每个时钟上升沿将clk_cnt变量加一,当达到499999后,就进入显示进程做下一步的赋值操作以显示相应接续的状态。为了达到四种显示模式循环切换的目的,可以将以上的所有赋值语句以顺序语句的形式置于进程中,这样在完成了一种显示方式后就会自动进入下一种设定好的显示模式,如此反复循环。当需要程序复位时,只需按下rst键即可,程序不管走都那里,执行那条语句,只要确定复位键按下时,程序立刻返回到程序执行语句的第一步,程序接着进行新的循环点亮。
第二章 子模块
系统工作流程如下图所示,在没有外界输入控制时,中央控制器将反复循环输入预先设定的编码,因此8个数码灯将在四种显示模式中循环显示。若复位端被置0,则系统被重置,无论当前处于什么状态,都重新从最开始的状态开始重新执行。
2.1 分频器
输入一个CLK信号,通过分频器模块分别输送到显示模式模块和显示LED模块 生成分频器程序:
module FPQ(rst,clk,sel,fp);input clk,rst;input [1:0]sel;output fp;reg[1:0]temp;reg fp;always@(posedge clk or negedge rst)if(!rst)begin temp<=0;fp<=0;图1 分频器模块 end else case(sel)2'b00: if(temp==2)begin fp<=1;temp<=0;end Else begin temp<=temp+1;fp<=0;end 2'b01: if(temp==3)begin fp<=1;temp<=0;end Else begin temp<=temp+1;fp<=0;end 2'b10: if(temp==1)begin fp<=1;temp<=0;end Else begin temp<=temp+1;fp<=0;end 2'b11:fp<=clk;endcase endmodule 2.2 显示模式模块
在实验箱上显示彩灯运行的模式,分别有1-4种模式生成数码管显示程序:
module moshi(state,led,rst,clk,);input [1:0] state;input rst,clk;output[7:0] led;reg [7:0]led;reg [2:0]temp;always@(posedge clk or negedge rst)if(!rst)temp<=0;else if(temp==3'b111)temp<=3'b000;else temp<=temp+1;always@(posedge clk)case(state)2'b00: begin case(temp)3'b000:led<=8'b10000000;3'b001:led<=8'b01000000;3'b010:led<=8'b00100000;3'b011:led<=8'b00010000;3'b100:led<=8'b00001000;3'b101:led<=8'b00000100;3'b110:led<=8'b00000010;3'b111:led<=8'b00000001;
图2 显示模式模块 endcase end 2'b01: begin case(temp)3'b000:led<=8'b00000001;3'b001:led<=8'b00000010;3'b010:led<=8'b00000100;3'b011:led<=8'b00001000;3'b100:led<=8'b00010000;3'b101:led<=8'b00100000;3'b110:led<=8'b01000000;3'b111:led<=8'b10000000;endcase end 2'b10: begin case(temp)3'b000:led<=8'b10000001;3'b001:led<=8'b01000010;3'b010:led<=8'b00100100;3'b011:led<=8'b00011000;3'b100:led<=8'b10000001;3'b101:led<=8'b01000010;3'b110:led<=8'b00100100;3'b111:led<=8'b00011000;endcase end 2'b11: begin case(temp)3'b000:led<=8'b00011000;3'b001:led<=8'b00100100;3'b010:led<=8'b01000010;3'b011:led<=8'b10000001;3'b100:led<=8'b00011000;3'b101:led<=8'b00100100;3'b110:led<=8'b01000010;3'b111:led<=8'b10000001;endcase end endcase endmodule 2.3 显示LED灯模块
通过8个LED灯显示4种显示模式:1模式,从左到右逐个点亮LED;2模式,从右到左逐个点亮LED;3模式,从两边到中间逐个点亮LED;4模式,从中见到两边逐个点亮LED。生成LED灯模块程序:
module SEG7(ms,clk,rst,seg7);input clk,rst;input [1:0]ms;output [6:0]seg7;reg[6:0]seg7;always@(posedge clk or negedge rst)if(!rst)seg7<=7'b0111111;else case(ms)2'b00:seg7<=7'b0000110;2'b01:seg7<=7'b1011011;2'b10:seg7<=7'b1001111;2'b11:seg7<=7'b1100110;endcase endmodule
图3 显示LED灯模块
第三章 调试及结果
3.1顶层原理图
原理图如下:
图4原理图
根据引脚锁定,完成实验箱硬件电路部分的线路连接。
再次编译,设定好编程下载方式后,将导线与相应数码管及开关谅解好就可以进行硬件下载测试了。最后,将程序下载入芯片后,观察硬件运行结果,即数码灯显示情况。经测试,所编写的程序完全达到了课程设计的要求,并得要了相应的结果。
第一种显示是从左向右逐个点亮LED。第二种显示:从右向左逐个点亮LED。第三种显示:从两边向中间逐个点亮LED。第四种显示:从中间到两边逐个点亮LED。在每个显示模式之间都有一次8位led全亮,接着全灭的显示过程,四种显示模式通过手动切换,并带有一位复位键控制系统的运行停止。当rst按键按下时,led停止显示,保持按下前的状态,如过不按rst,八位led灯四种模式通过手动控制模式显示。
第四章 心得体会
在这为期近一周的EDA课程设计过程中,自己受益匪浅,不仅对书本知识有了更全面更深刻的理解,还掌握了QuartusⅡ这款软件。在以后的工作有增加了一门新技能。在整个课设过程中遇到了很多的困难,引脚的设定,顶层文件的建立,画图中连线的区分,都是小细节,但都必须注意,否则就会影响整个设计的实验的过程使我明白了,要想避免实验中走弯路,首先程序要逻辑清晰,简洁明了,避免不必要的嵌套与条用,其次要适当地给程序加上注解文字,提高可读性,以方便之后的程序出错时进行查找,最后充分利用仿真软件提供的各项编译工具与报错消息,按图索骥,有方向的完成程序调试。网上搜集的一些资料也给予了我很大的帮助。
在这短短几天的课设中,加深了我对EDA的理解,认识。对QuartusⅡ软件的使用更加得心应手,在以后的学习和工作中又多了一门技能。
书本上的知识学会知识了解,必须在实践中才能深入的掌握所学的知识,要不就是纸上谈兵,不论说的多么华丽,只有在实践中才能体现知识的价值,也才能考研一个人的真正能力。
这次EDA课设对我受益匪浅,谢谢在设计中帮助过我的老师和同学,团结就是力量。
第二篇:跑马灯设计EDA课程设计
第一章 设计内容与设计方案
1.1课程设计内容
控制8个LED进行花样性显示。
设计4种显示模式:s0,从左到右逐个点亮LED;s1,从右到左逐个点亮LED;s2,从两边到中间逐个点亮LED;s3,从中见到两边逐个点亮LED。
4种模式循环切换,复位键(rst)控制系统的运行停止。数码管显示模式编号。可预置彩灯变换速度,4档快、稍快、中速、慢速,默认工作为中速。
1.2设计方案
在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,以及平时实验的具体操作内容,利用硬件描述语言HDL,EDA软件QuartusⅡ和硬件平台cycloneⅡFPGA进行一个简单的电子系统设计,本次课程设计采用Verilog HDL硬件描述语言编写控制程序,应用Quartus Ⅱ软件实现仿真测试。采用FPGA芯片对LED灯进行控制,使其达到流水跑马灯显示的效果,LED灯采用共阳极接法,当给它一个低电平时,LED点亮,我们利用移位寄存器使各输出口循环输出高低电平,达到控制的目的。
第二章 设计原理
2.1设计原理及设计流程
本次试验我所完成的内容是跑马灯的设计,下面我简单的进行一下原理的阐述。
跑马灯课程设计的要求是控制8个LED进行花样显示,设计四种显示模块:第一种显示是从左向右逐个点亮LED。第二种显示:从右向左逐个点亮LED。第三种显示:从两边向中间逐个点亮LED。第四种显示:从中间到两边逐个点亮LED。四种显示模式循环切换,并带有一位复位键控制系统的运行停止。为了完成要求的效果显示,由于要求比较简单,所以不用分为很多模块来具体控制,所以我先择利用移位寄存器来完成灯的点亮,我们将LED灯采用共阳极接法,当给于低电平时点亮,那么当我们需要点亮某位LED灯时,只需在该位上赋予低电平即可,比如:如果我们要实现8个数码灯从左到右依次点亮,那么我们就可以给这8个数码灯分别赋值10000000,经过一段时间的延时后再给其赋值01000000,再经过一段时间延时后再给其赋值00100000,依次类推,则最后一种赋值状态为00000001,这样就得到了相应的现象。同理,要实现数码灯从右向左依次点亮,从中间向两端依次点亮,从两端向中间依次点亮都可以采用这样赋值的方法。为了达到四种显示模式循环切换的目的,可以将以上的所有赋值语句以顺序语句的形式置于进程中,这样在完成了一种显示方式后就会自动进入下一种设定好的显示模式,如此反复循环。当需要程序复位时,只需按下rst键即可,程序不管走都那里,执行那条语句,只要确定复位键按下时,程序立刻返回到程序执行语句的第一步,程序接着进行新的循环点亮。
第三章 设计程序
3.1 Verilog HDL程序
module ceshi(clk,rst,Q,DIN,CLK,a);input clk,rst;input [1:0]DIN;
//DIN为变换速度档 output signed[7:0]Q;
//Q为7个LED output [6:0]a;
//a为数码管显示模式 output CLK;
//自定义时钟 parameter DOUT=8'b0111_1111;reg
CLK;reg
[6:0]x;reg
[1:0]cs;reg
[7:0]Q;reg
[6:0]a;always@(posedge clk)begin x<=7'b0000000;CLK=0;case(DIN)0:begin
x<=x+1'b1;
if(x==20)begin
x<=7'b0;
CLK=~CLK;
end
end 1:begin
x<=x+1'b1;
if(x==15)begin
x<=7'b0;
CLK=~CLK;
end
end 2:begin
x<=x+1'b1;
if(x==10)begin
x<=7'b0;
CLK=~CLK;
end
end 3:begin
x<=x+1'b1;
if(x==5)begin
x<=7'b0;
CLK=~CLK;
end
end default begin
x<=x+1'b1;
if(x==20)begin
x<=7'b0;
CLK=~CLK;
end
end endcase end always@(posedge CLK or negedge rst)begin if(!rst)begin
Q<=DOUT;cs<=2'b00;a=7'b000_0000;end else begin case(cs)0:begin Q<=Q>>1;Q[7]<=1'b1;a=7'b0111111;
if(Q==8'b1111_1110)begin
Q<=8'b1111_1101;
cs<=2'b01;
end
end 1:begin Q<=Q<<1;Q[0]<=1'b1;a=7'b0000_110;
if(Q==8'b0111_1111)begin
Q<=8'b0111_1110;
cs<=2'b10;
end
end 2:begin Q[7:4]<=Q[7:4]>>1;
Q[3:0]<=Q[3:0]<<1;
Q[7]<=1'b1;
Q[0]<=1'b1;a=7'b1011_011;
if(Q==8'b1110_0111)begin
Q<=8'b1101_1011;
cs<=2'b11;
end
end 3:begin Q[7:4]<=Q[7:4]<<1;
Q[3:0]<=Q[3:0]>>1;
Q[4]<=1'b1;
Q[3]<=1'b1;a=7'b100_1111;
if(Q==8'b0111_1110)begin
Q<=8'b0111_1111;
cs<=2'b00;
end
end default begin
Q<=DOUT;
cs<=2'b00;
a=7'b0000_000;
end endcase end end endmodule
第四章 设计结果及仿真波形
4.1 设计结果
图1 顶层文件原理图
4.2仿真波形
4.3仿真结果分析
当输入DIN为00时选择慢速档,CLK的周期大约为20us,随着CLK上升沿的到来输出Q做移位变化,开始从左向右移,数码管段码输出a显示0,然后从右向左移,数码管段码输出a显示1,然后从中间向两边移,数码管段码输出a显示2,然后从两边向中间移,数码管段码输出a显示3,之后循环显示,当按下复位键rst时系统运行停止,第一个灯点亮,数码管无显示。当输入DIN为01时选择中速档,CLK的周期大约为15us,执行以上循环显示。当输入DIN为10时选择稍快档,CLK的周期大约为10us,执行以上循环显示。当输入DIN为11时选择快速档,CLK的周期大约为5us,执行以上循环显示。
第五章 设计总结
通过这次有关于EDA技术的课程设计的学习与应用,我们基本了解了EDA技术的相关应用,也掌握了EDA设计的相关软件Quartus7.2的最基础的使用方法,丰富了我们的设计手段,也让我了解了更多的仿真方法。
在上机操作的过程中,刚开始我们遇到了很多的困难,对软件的不熟悉以及对原理掌握的不透彻,使得刚开始的时候举步维艰,但是经过对最简单的模型的设计及仿真练习过后,我们基本掌握了软件的使用方法,通过软件仿真及对各个参数的设置,我们不断调试仿真出来的波形。这期间我们也了解到,虽然软件的仿真功能很强大,但是还是需要操作人员仔细的进行观察及调试的,否则也容易出现仿真错误。
这次的学习开阔了我们的视野,使我们了解了更多的专业方面的实际应用,在生产应用方面的用处等,以及专业方面的发展方向等……随着微电子技术和计算机技术的不断发展,在涉及通信、国防、航天、工业自动化、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升,它已成为当今电子技术发展的前沿之一。EDA技术发展迅猛,完全可以用日新月异来描述。EDA技术的应用广泛,现在已涉及到各行各业。EDA水平不断提高,设计工具趋于完美的地步,所以我们更加应该多多掌握这方面的知识。
第六章 参考文献
[1] 潘松、黄继业编著.EDA技术与VHDL,北京:清华大学出版社 [2] 边计年主编.用VHDL设计电子线路, 北京:清华大学出版社
[3] 王金明,杨吉斌编著.数字系统设计与Verilog HDL.北京:电子工业出版社 [4] 徐志军,徐光辉编著.CPLD/FPGA的开发与应用.北京:电子工业出版社 [5] 叶天迟主编.EDA实用技术实验及课程设计指导书.长春:自编实验指导书
第三篇:EDA课程心得
EDA课程学习心得
这学期的后半期,我们开了EDA技术这门课程。EDA的中文解释是电子设计自动化,这门课程主要是用于对现代高新电子产品的设计,EDA在硬件方面融合了大规模集成电路技术,是一款综合性很强的工具。
这门课程的学习在教学中应该以实践为主,我们每周有两节课,一节是理论课学习,一节是实践课。刚开始上理论课程的时候,主要是对该软件的使用做介绍,而在实践课程上,我们应该对软件进行运用,但是,有很多的同学却没有干与课程相关的事,只有一部分的同学在练习。开始的时候,对软件很陌生,都是几个同学在一起研究,并且询问老师,才慢慢的掌握了使用方法。在后面的理论学习中,老师主要是讲解编程的一些语法,并且只讲了一些常用的,像信号量,变量,还有PROCESS语句等,这些是编程中常用的一些知识。在实践课上,主要是以实验指导书为主,根据指导书上的内容进行编程,画图仿真来对EDA技术的运用有更深入的理解。在每周一节理论课的学习情况下,很多的时间都是很珍贵的,学习理论的时间就那么一点,那么,肯定就不可能学习的很全面,老师主要是讲方法,更多的是要我们自己努力。这本教材还很不错,讲解的很详细,让初学者也能理解。然后实践课程是可以在课后也能练习,课上发现问题就能及时的询问老师,但是,课后就只能询问同学,或者是将问题留到课堂上再问老师。
这门课程学完最大的感触就是学习的时间太短了,这门课程听老师说对我们的以后工作是有很大的帮助的,但是我们却只学习了半个学期,只用了32个课时就结束了,这肯定是不够的。EDA技术可以完成各种自动设计过程,是目前最为瞩目的一项技术,它有强大的逻辑设计仿真测试技术。它的仿真测试技术只要通过计算机,就能对所设计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作,在完成实际系统的安装后,还能对系统上的目标器件进行所谓的边界扫描测试。这一切都极大的提高了大规模的系统电子设计的自动化程度。现在的很多设计工作都需要先进行计算机仿真,如果没有错误,在运用到实际的硬件中,这不仅能提高设计速度,还能减少因为设计失误而造成的原料浪费。学好一门仿真软件对于我们本科学生是必不可少的,因为以后毕业了如果从事设计方向的工作,那必然要求我们有这样的一门技术。
以下是我在这门课程的学习过程中总结的几点建议,希望老师能够耐心的看完:
(1)、根据学生的层次,设计一种适合学生的教学方案。像我们班这样的基础不太好的班级,可能采用重实践的方法更合适一些。上课讲很多的理论知识,都不及在机房自己练习来的快。而且,老师有时候在课堂上也不知道该给我们讲些什么我们才会更好的接收,这样的话,在我们自己动手实践的过程中我们发现了问题,经过询问老师和与同学一起研究,这样,就可以克服难题,而且,经过这样的经历,我们对于该问题也会有很深的印象,在以后的应用中出现类似的问题我们也会更快的找到方法解决。
(2)、在实践课上要严抓课堂秩序。在实践课的时候,很多同学都不做与课程相关的事,要么翻纸盘,要么几个一起玩游戏,而真正在做实验的同学就只有那么少许的人。很多人都是在一开始就养成这样的坏习惯的,如果在刚开始就严抓课堂秩序,那么,很多人可能就会按照要求循规蹈矩了。在实践课上是很重要的学习机会,本来课程安排的时间就很少,不好好的利用,那么肯定是一项严重的损失。
(3)、上理论课的时候尽量的多的将一些知识点讲详细一些。我们学习的都是很基础的知识,不要求深入,但是应该尽量的将基础的东西都掌握了。在这门课程中,我们只学习了几章较为基础和重要的内容,只要掌握了这几章也就能进行简单的编程,在这样的情况下,我们就更是需要老师帮助我们,引导我们,理清这些知识点,从而掌握它们。
以上是我在这门课程的学习中的一些感触和心得,虽然这门课程的学习结束了,但是,有一些学习方法是同样可以运用到其他的课程学习中,在以后的学习中,我们还应该坚持,努力,将学习进行到底!
第四篇:合肥工业大学EDA课程总结报告
EDA课程总结报告
一、EDA技术简介 1.EDA技术的概念
EDA即Electronic Design Automation的缩写,直译为:电子设计自动化 EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。
2.EDA技术的目的和意义
EDA技术以规模巨大的可编程逻辑器件(PLD)作为进行电子设计的载体,硬件描述语言(HDL)作为系统逻辑描述的一种主要 表达方式,通过它来完成对系统逻辑的描述,再依托具有强大功能的计算机,通过运用与 EDA 技术相应的工具软件,完成电子系统的 自动化设计。这种技术的应用使设计人员得以 高效快速地完成设计任务,使设计所用周期时间得以缩短,减少了设计所需的投入成本。20 世纪70年代由于计算机及集成电路的急剧发展,使电子技术受到剧烈的冲击,其更新换代的周期不断缩减,而专用的集成电路却不断提升其设计难度,致使两者之间的矛盾逐渐扩大,这就使得电子技术要不断地更新,从而满足电子产品生产的需要,经过近几十年的发展,电子设计技术大致经历了三个主要的发展阶段,从初期的 CAD 阶段到 CAE 阶段再到现在的 EDA 阶段,电子设计技术取得了飞跃性的发展。EDA技术最特别之处在于它的设计流程,与传统自下而上的电子设计流程恰恰相反,EDA技术选择使用自上而下的设计流程,它从电子系统设计的整体出发,在进行设计之前就将系统中各部分之间的结构规划好,在对方框图进行划分时完成相关的仿真和纠错工作,使用 HDL 对高层次逻辑进行描述,并运用综合优化方法完成所有有关工作,然后通过使用 EDA 技术,可以帮助用户实现对系统中任意一项硬件功能进行系统描述,最后再利用现场可编程门阵列(FPGA)或复杂可编程逻辑器 件(CPLD)来实现电子系统设计的结果。这种先进的电子技术有效地解决了传统电子设计技术的弊端,减少了实际应用中出现故障的几率,从而使设计效率得以大幅度提升。
二、EDA技术发展现状
EDA 技术发展迅猛, 逐渐在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。
在教学方面: 几乎所有理工科(特别是电子信息)类的高校都开设了EDA 课程。主要是让学生了解EDA 的基本原理和基本概念、掌握用VHDL 描述系统逻辑的方法、使用EDA 工具进行电子电路课程的模拟仿真实验。如实验教学、课程设计、毕业设计、设计竞赛等均可借助CPLD/ FPGA 器件, 使实验设备或设计出的电子系统具有高可靠性, 又经济、快速、容易实现、修改便利, 同时可大大提高学生的实践动手能力、创新能力和计算机应用能力。
在科研方面: 主要利用电路仿真工具进行电路设计与仿真;利用虚拟仪器进行产品调试;将CPLD/ FPGA 器件的开发应用到仪器设备中, CPLD/ FPGA 可直接应用于小批量产品的芯片或作为大批量产品的芯片前期开发。传统机电产品的升级换代和技术改造, CPLD/ FPGA 的应用可提高传统产品的性能, 缩小体积, 提高技术含量和产品的附加值。作为高等院校有关专业的学生和广大的电子工程师了解和掌握这一先进技术是势在必行, 这不仅是提高设计效率的需要, 更是时代发展的需求, 只有掌握了EDA 技术才有能力参与世界电子工业市场的竞争, 才能生存与发展。随着科技的进步, 电子产品的更新日新月异, EDA 技术作为电子产品开发研制的源动力, 已成为现代电子设计的核心。所以发展EDA 技术将是电子设计领域和电子产业界的一场重大的技术革命, 同时也对电类课程的教学和科研提出了更深更高的要求。
在产品设计与制造方面: 从高性能的微处理器、数字信号处理器一直到彩电、音响和电子玩具电路等, EDA 技术不单是应用于前期的计算机模拟仿真、产品调试, 而且也在PCB 的制作、电子设备的研制与生产、电路板的焊接、制作过程等有重要作用。可以说EDA 技术已经成为电子工业领域不可缺少的技术支持。
进入21 世纪后,电子技术全方位纳入EDA 领域,EDA使得电子领域各学科的界限更加模糊,更加互为包容,突出表现在以下几个方面: 使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能;基于EDA 工具的ASIC 设计标准单元已涵盖大规模电子系统及IP 核模块;软硬件IP 核在电子行业的产业领域、技术领域和设计应用领域得到进一步确认;SOC(System-on-Chip)高效低成本设计技术的成熟。随着半导体技术、集成技术和计算机技术的迅猛发展, 电子系统的设计方法和设计手段都发生了很大的变化。
传统的固定功能集成块加连线的设计方法正逐步地退出历史舞台, 而基于芯片的设计方法正成为现代电子系统设计的主流。
三、器件的封装
常用的各种电路元器件以及IC芯片采用的封装形式:
元件名称
元件符号
封装属性
电阻 RES1-RES4 AXIAL系列 从AXIAL-0.3到AXIAL-1.0,后缀数字代表两焊盘的间距,单位为Kmil.瓷片电容 RAD0.1-RAD0.3。其中0.1-0.3指电容大小,一般用RAD0.1 电解电容: RB.1/.2-RB.4/.8 其中.1/.2-.4/.8指电容大小。一般<100uF 用RB.1/.2,100uF-470uF用RB.2/.4,>470uF用RB.3/.6 电位器 POT1和POT2 VR-1到VR-5.普通二极管 DIODE DIODE0.4和DIODE 0.7 肖特基二极管 DIODE SCHOTTKY DIODE0.4和DIODE 0.7 隧道二极管 DUIDE TUNNEL DIODE0.4和DIODE 0.7 变容二极管 DIODE VARCTOR DIODE0.4和DIODE 0.7 稳压二极管 ZENER1~3 DIODE0.4和DIODE 0.7 发光二极管 RB.1/.2 三极管 NPN,NPN1,PNP,PNP1 TO18、TO-92A(普通三极管)TO-220(大功率三极管)TO3(大功率达林顿管)
N沟道结型场效应管 JFET N TO18 P沟道结型场效应管 JFET P TO18 N沟道增强型管 MOSFET N TO18 P沟道增强型管 MOSFET P TO18 整流桥 BRIDGE1和BRIDGE2 D系列,如D-44,D-37,D-46等。单排多针插座 CON CON系列,从CON1到CON60,引脚封装形式为SIP系列,从SIP-2到SIP-20。
.双列直插元件
根据功能的不同而不同
DIP系列。
串并口类原理图 DB DB系列,引脚封装形式为DB和MD系列 电源稳压块78系列 7805,7812 TO-126和TO-126 电源稳压块79系列 7905,7912 TO-126和TO-126
四、PCB板布线
PCB板布线对电路的影响:
1.我们要注意贴片器件(电阻电容)与芯片和其余器件的最小距离芯片:一般我们定义分立器件和IC芯片的距离0.5~0.7mm,特殊的地方可能因为夹具配置的不同而改变
2.对于分立直插的器件
一般的电阻如果为分立直插的比贴片的距离略大一般在1~3mm之间。注意保持足够的间距(因为加工的麻烦,所以直插的基本不会用)
3.对于IC的去耦电容的摆放
每个IC的电源端口附近都需要摆放去耦电容,且位置尽可能靠近IC的电源口,当一个芯片有多个电源口的时候,每个口都要布置去耦电容。
4.在边沿附近的分立器件
由于一般都是用拼板来做PCB,因此在边沿附近的器件需要符合两个条件,第一就是与切割方向平行(使器件的应力均匀),第二就是在一定距离之内不能布置器件(防止板子切割的时候损坏元器件)5.如果相邻的焊盘需要相连,首先确认在外面进行连接,防止连成一团造成桥接,同时注意此时的铜线的宽度。
6.焊盘如果在铺通区域内需要考虑热焊盘(必须能够承载足够的电流),如果引线比直插器件的焊盘小的话需要加泪滴(角度小于45度),同样适用于直插连接器的引脚。
7.元件焊盘两边的引线宽度要一致,如果时间焊盘和电极大小有差距,要注意是否会出现短路的现象,最后要注意保留未使用引脚的焊盘,并且正确接地或者接电源。
8.注意通孔最好不要打在焊盘上。
9.另外就是要注意的是引线不能和板边过近,也不允许在板边铺铜(包括定位孔附近区域)
10.大电容:首先要考虑电容的环境温度是否符合要求,其次要使电容尽可能的远离发热区域
五、总结
心得感想:
在开始上这门课时,我对它有一点兴趣,因为当我用自己所学的知识做出一些东西时我觉得特别开心。通过对这门课程相关理论的学习,我掌握了EDA的一些基本的的知识,用自己学到的东西尽可能的去完成老师布置的实验。通过实验使我更加深刻的认识和理解了EDA。不过在做实验的时候带来的不仅仅只是收获,也会有很多的困难。例如,当在画实验原理图的时候需要一个元件,但是怎么找都找不到这个元件。做实验的时候我也深刻的感觉到团结的力量以及在老师的重要性,有很多的时候出现问题了不要自己硬抗着,而是应该多问问身边的人,多问问老师,因为老师的指导会使你的问题马上得以解决而且你也会理解,当下次出现同样的错误时,你会很快的解决。
对这门课程的最大收获除了学习到了知识以外,更重要的是让我明白了一个道理:只要全身心的投入到一件事中,并且要有持之以恒的决心,就一定会有收获。有的人觉得自己做不出来,就网上搜一个了事,但是,放弃一次黑暗中摸索的经历,就放弃了一次成长的机会!如果你付出了,没有收获。那只能说,是付出的还不够多。
在学习这门课的时候我觉得实验真的很重要,而且只有经过实验我们才能更好的掌握所学的理论知识,才能更好的应用它们。
第五篇:EDA数字钟设计
数字钟
一、实验目的
1、掌握多位计数器相连的设计方法。
2、掌握十进制,六进制,二十四进制计数器的设计方法。
3、掌握扬声器的驱动及报时的设计。
4、LED灯的花样显示。
5、掌握CPLD技术的层次化设计方法。
二、实验器材
1、主芯片Altera EPF10K10LC84-4。2、8个LED灯。
3、扬声器。4、4位数码显示管。5、8个按键开关(清零,调小时,调分钟)。
三、实验内容
根据电路特点,运用层次设计概念设计。将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口。
1、时计时程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity hour is
port(reset,clk : in std_logic;
daout : out std_logic_vector(7 downto 0));end hour;
architecture behav of hour is
signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);begin
p1: process(reset,clk)
begin
if reset='0' then
count<=“0000”;
counter<=“0000”;
elsif(clk'event and clk='1')then
if(counter<2)then
if(count=9)then
count<=“0000”;
counter<=counter + 1;
else
count<=count+1;
end if;
else
if(count=3)
then
counter<=“0000”;
else
count<=count+1;
count<=“0000”;
end if;
end if;
end if;
end process;
daout(7 downto 4)<=counter;daout(3 downto 0)<=count;
end behav;
2、分计时程序: library ieee;
use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity minute is
port(reset,clk,sethour: in std_logic;
daout : out std_logic_vector(7 downto 0);
enhour : out std_logic);end minute;
architecture behav of minute is
signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);signal carry_out1 : std_logic;signal carry_out2 : std_logic;begin
p1: process(reset,clk)begin
if reset='0' then
count<=“0000”;
counter<=“0000”;
elsif(clk'event and clk='1')then
if(counter<5)then
if(count=9)then
count<=“0000”;
counter<=counter + 1;
else
count<=count+1;
end if;
carry_out1<='0';
else
if(count=9)then
count<=“0000”;
counter<=“0000”;
carry_out1<='1';
else
count<=count+1;
carry_out1<='0';
end if;
end if;end if;end process;
p2: process(clk)begin
if(clk'event and clk='0')then
if(counter=0)then
if(count=0)then
carry_out2<='0';
end if;
else
carry_out2<='1';
end if;end if;end process;
daout(7 downto 4)<=counter;daout(3 downto 0)<=count;enhour<=(carry_out1 and carry_out2)or sethour;end behav;
3、秒计时程序: library ieee;
use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity second is
port(reset,clk,setmin : in std_logic;
daout : out std_logic_vector(7 downto 0);
enmin : out std_logic);end second;
architecture behav of second is
signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);signal carry_out1 : std_logic;signal carry_out2 : std_logic;begin
p1: process(reset,clk)begin
if reset='0' then
count<=“0000”;
counter<=“0000”;
elsif(clk'event and clk='1')then
if(counter<5)
then
if
(count=9)
then
count<=“0000”;
counter<=counter + 1;
else
count<=count+1;
end if;
carry_out1<='0';
else
if(count=9)
then
count<=“0000”;
counter<=“0000”;
carry_out1<='1';
else
count<=count+1;
carry_out1<='0';
end if;
end if;end if;end process;daout(7 downto
4)<=counter;
daout(3
downto
0)<=count;enmin<=carry_out1 or setmin;end behav;6
4、alert程序: library ieee;
use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity alert is port(clkspk : in std_logic;
second : in std_logic_vector(7 downto 0);
minute : in std_logic_vector(7 downto 0);
speak : out std_logic;
lamp : out std_logic_vector(8 downto 0));end alert;
architecture behav of alert is signal divclkspk2 : std_logic;begin p1: process(clkspk)begin
if(clkspk'event and clkspk='1')then
divclkspk2<=not divclkspk2;
end if;end process;p2: process(second,minute)begin if(minute=“01011001”)then case second is
when “01010001”=>lamp<=“000000001”;speak<=divclkspk2;when “01010010”=>lamp<=“000000010”;speak<='0';when “01010011”=>lamp<=“000000100”;speak<=divclkspk2;when “01010100”=>lamp<=“000001000”;speak<='0';when “01010101”=>lamp<=“000010000”;speak<=divclkspk2;when “01010110”=>lamp<=“000100000”;speak<='0';when “01010111”=>lamp<=“001000000”;speak<=divclkspk2;when “01011000”=>lamp<=“010000000”;speak<='0';when “01011001”=>lamp<=“100000000”;speak<=clkspk;when others=>lamp<=“000000000”;end case;end if;end process;end behav;8
5、seltime程序 library ieee;
use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity seltime is port(ckdsp : in std_logic;
reset : in std_logic;
second : in std_logic_vector(7 downto 0);
minute : in std_logic_vector(7 downto 0);
hour : in std_logic_vector(7 downto 0);
daout : out std_logic_vector(3 downto 0);
sel : out std_logic_vector(2 downto 0));end seltime;
architecture behav of seltime is signal sec : std_logic_vector(2 downto 0);begin
process(reset,ckdsp)begin
if(reset='0')then sec<=“000”;
elsif(ckdsp'event and ckdsp='1')then
sec<=“000”;else
sec<=sec+1;end if;end if;end process;
process(sec,second,minute,hour)begin case sec is
when “000”=>daout<=second(3 downto 0);when “001”=>daout<=second(7 downto 4);when “011”=>daout<=minute(3 downto 0);when “100”=>daout<=minute(7 downto 4);when “110”=>daout<=hour(3 downto 0);when “111”=>daout<=hour(7 downto 4);when others=>daout<=“1111”;end case;end process;
if(sec=“111”)then
sel<=sec;end behav;
6、deled程序: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;
ENTITY deled IS PORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
A,B,C,D,E,F,G,H: OUT STD_LOGIC);END deled;
ARCHITECTURE BEHAV OF deled IS
SIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN DATA<=S;PROCESS(DATA)BEGIN
CASE DATA IS
WHEN “0000”=>DOUT<=“00111111”;WHEN “0001”=>DOUT<=“00000110”;WHEN “0010”=>DOUT<=“01011011”;WHEN “0011”=>DOUT<=“01001111”;WHEN “0100”=>DOUT<=“01100110”;WHEN “0101”=>DOUT<=“01101101”;WHEN “0110”=>DOUT<=“01111101”;WHEN “0111”=>DOUT<=“00000111”;WHEN “1000”=>DOUT<=“01111111”;WHEN “1001”=>DOUT<=“01101111”;WHEN “1010”=>DOUT<=“01110111”;WHEN “1011”=>DOUT<=“01111100”;WHEN “1100”=>DOUT<=“00111001”;WHEN “1101”=>DOUT<=“01011110”;WHEN “1110”=>DOUT<=“01111001”;WHEN “1111”=>DOUT<=“01000000”;WHEN OTHERS=>DOUT<=“00000000”;END CASE;END PROCESS;H<=DOUT(7);
G<=DOUT(6);
F<=DOUT(5);
E<=DOUT(4);D<=DOUT(3);C<=DOUT(2);B<=DOUT(1);A<=DOUT(0);END BEHAV;
7、顶层原理图:
四、实验结果 顶层原理图仿真波形:
五、心得体会
1、系统设计进要行充分的方案论证,不可盲目就动手去做;
2、实验中对每一个细节部分都要全面思考,要对特殊情况进行处理;
3、对于数字系统,要考虑同步、异步问题;
4、数字电路的理论分析要结合时序图;
5、遇到问题,要顺藤摸瓜,分析清楚,不可胡乱改动,每做一次改变都要有充分的理由;
6、模块化设计方法的优点在于其简洁性,但是在实验设计中也发现,在实验最终电路确定之前,要尽量减少模块重叠嵌套,因为在总的电路敲定之前,电路还不成熟,很多地方需要改进,如果在开始时就进行多层模块化,里层模块电路的修改将影响其外层的全部电路,这样就是牵一发动全身,很显然,这样将导致电 数字钟课程设计 电路设计的低效,所以在设计过程中,一定要尽量减少超过两层的模块;
7、遇到问题花了很长时间没有解决掉,要学会想他人请教,别人的不经意一点,可能就能把自己带出思维死区。