第7章EDA技术应用实例
- 格式:docx
- 大小:1000.93 KB
- 文档页数:150
eda技术在生活中的应用eda技术在生活中的应用EDA(ElectronicDesignAutomation)技术,即电子设计自动化技术,是在CAA和CAD(电子线路计算机辅助分析和辅助设计)技术基础上发展起来的计算机设计软件系统,它集计算机、电子、信息和CAM(计算机辅助制造)、CAT(计算机辅助测试)等技术于一体,不仅具有强大的设计能力,还具有测试、分析及管理的功能,可完整实现电子产品从电学观念设计到生成物理生产数据的全过程。
它改变了以往采用定量计算和搭电路实验为基础的传统设计方式,使电子电路的分析与设计方法发生了重大变革。
微电子技术的迅猛发展和微型计算机的快速普及,给EDA技术的广泛应用创造了良好条件。
EDA技术已成为当代电子系统及专用集成电路设计中不可缺少的重要手段。
一、常用的EDA技术软件目前引入我国EDA软件有多种,其中影响比较在的有:Pspice、Multisim(MULTISIM)、Protel、Orcad等。
Pspice(SimulationProgramWithIntegratedCircuitEmphasis)是美国MicroSim公司于20世纪80年代开发的电路仿真分析软件,可以进行模拟/数字电路混合分析、参数优化等。
Multisim的前身是在我国具有一定知名度的EWB(ElectronicWorkbench)软件,是加拿大InteractiveImageTechnologiesLtd公司20世纪90年代初推出的专用于电工电子线路仿真的软件,可以实现对模拟数字电路的混合仿真。
Protel的前身版本是Tango,由澳大利亚ProtelTechnolog公司研制开发。
该软件功能十分强大,可以完成电路原理图的设计、电路仿真分析、印制电路板设计及自动布线、信号完整性分析、可编程逻辑器件(PLD)设计等。
Orcad软件包是20世纪90年代初由美国Orcad公司研制开发的EDA软件包,包括原理图设计、PCB设计、VST、PLDTools等软件。
EDA技术综合应用设计实例EDA(电子设计自动化)技术综合应用设计是指将不同的EDA技术和工具综合应用于电子系统设计的过程。
这涉及到电子设计的多个方面,包括电路设计、芯片设计、电源设计等。
一个典型的EDA技术综合应用设计实例是基于FPGA(现场可编程门阵列)的系统设计。
在这个实例中,我们将使用EDA技术来设计一个基于FPGA的多功能数字时钟。
首先,我们需要使用电路设计工具进行时钟电路的设计。
我们可以使用VHDL或Verilog等硬件描述语言来描述时钟电路的功能和行为。
在设计完成之后,我们可以使用仿真工具来验证电路的正确性和性能。
接下来,我们需要使用芯片设计工具来进行FPGA芯片的设计。
这包括通过布线、模块化等技术将我们的电路设计转化为逻辑网表,并将其映射到FPGA芯片上。
在这个过程中,我们还可以使用综合工具来优化电路的功耗和面积。
然后,我们需要使用电源设计工具来设计数字时钟的供电系统。
这涉及到选择合适的电源管理芯片、设计稳压电路以及进行功耗和热分析等工作。
最后,在硬件设计完成后,我们还需要使用PCB设计工具进行PCB布局和布线。
这包括将FPGA芯片和其他外围器件放置在PCB板上,并使用布线算法将它们连接起来。
在PCB设计完成后,我们可以使用电磁兼容性分析工具来验证电路的电磁兼容性。
综合应用设计完成后,我们可以使用EDA工具进行全系统级仿真和验证。
通过创建完整的系统测试台,我们可以验证时钟的正确性、性能和可靠性。
如果需要改进设计,我们可以使用优化工具来找到最佳解决方案。
总结起来,EDA技术综合应用设计实例展示了如何将不同的EDA技术和工具应用于电子系统设计过程中。
通过综合应用各种技术和工具,我们可以提高设计的效率和质量,并实现更高的系统性能。
EDA技术综合应用设计实例EDA(Electronic Design Automation)技术是一种电子设计自动化技术,通过软件工具和方法来实现电子产品的设计和验证。
下面是一个EDA技术综合应用设计实例。
背景:在现代社会中,无线通信技术是非常重要的技术之一,随着无线通信技术的不断发展,人们的生活质量得到了极大的提高。
在无线通信系统中,无线电频率的调整和控制是重要的步骤。
为了实现频率调整和控制,需要设计一个频率锁定环(PLL)电路。
本次实例的目标是使用EDA技术设计和验证一个简单的PLL电路。
设计要求:设计一个具有以下特性的PLL电路:1.输入信号频率为10MHz2.输出信号频率为400MHz3. 希望达到的锁定时间为100 ns4.锁定范围为±20kHz设计步骤:1.设计电路结构图:根据PLL电路的原理,设计电路结构图。
PLL电路包括一个相位比较器、一个锁定振荡器和一个分频器。
相位比较器用于比较反馈信号和参考信号的相位差,输出控制信号给锁定振荡器调整频率。
锁定振荡器生成输出信号,分频器用于将输出信号的频率分频到400MHz。
2.选择合适的元件:根据设计要求和电路结构图,选择适合的元件。
例如,选择合适的电阻、电容、晶体振荡器等。
3. 使用EDA工具进行电路模拟:使用EDA工具,如Cadence或Mentor Graphics等,进行电路模拟。
在模拟中,可以设置输入信号的频率和幅值,并观察输出信号的频率和幅值。
4.优化电路性能:根据模拟结果,可以对电路进行优化。
例如,可以通过调整电路参数、改变电路结构等方式来改善锁定时间、锁定范围等性能指标。
5.进行电路布局与布线:根据设计结果,进行电路布局和布线。
电路布局是指将电路中的元件放置在适当的位置,以减小信号干扰和噪声。
电路布线是指将电路中的元件通过导线连接起来,形成完整的电路路径。
6.进行电路验证:设计完成后,进行电路验证。
验证是指使用EDA工具验证设计的正确性和性能指标是否符合要求。
第7章EDA技术应用实例7.1温湿度自动监控系统设计7.2 电机传动控制模拟系统设计7.3自动售货机控制系统设计7.4 多功能音乐播放器设计目录设计7.1 温湿度自动监控系统设计温湿度自动监控广泛应用于工业生产、农业生产以及仓储、居家等多种场合的环境监测中,对于节约能源、提高生产效率和产品质量、提高人体舒适度等都具有重要意义。
7.1.1系统设计方案温湿度自动监控系统基于FPGA开发板KX-2C5F设计实现,核心硬件包括FPGA、传感器和显示报警机构。
系统能够自动检测室内温度和湿度,并且显示所测温湿度;给出温度与湿度的阈值,将检测数据与阈值数据比对,在设定范围内给出正常信号,否则给出报警信号(灯光或声音),无线通信部分本次设计不涉及。
温湿度传感器选用DHT11数字温湿度传感器,显示器件采用点阵型液晶屏LCD12864。
系统框图如图7.1所示。
设计图7.1温湿度自动监控系统框图温湿度传感器FPGA声光报警液晶显示无线通信温湿度物理量7.1.2 湿温度数据采集的控制——DHT11的驱动DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它综合应用了数据采集技术和温湿度传感技术,传感器内置模数转换器,直接将温度和湿度模拟量在内部转换成数字量,并且串行输出40bit 数据,依次是8bit (湿度整数部分)+8bit (湿度小数部分)+8bit(温度整数部分)+8bit(温度小数部分)+8bit(校验和)。
本设计要求只读取温湿度的整数部分。
设计1.设计方案在接收DHT11转换数据时,需要将传感器输出的40位串行数据存储为并行数据,然后转化为摄氏温度值和相对湿度百分比的BCD码进行输出。
串行数据并行存储到寄存器的思路是,每读取一次数据,就将用于存放数据的位矢循环左移,直至全部移入。
设计采用状态机模拟FPGA与DHT11之间的通讯与同步,由于DHT11是单总线传感器,对时序的操作只在一根总线上完成,为了确保数据读取的完整和可靠,就必须严格遵循单总线协议。
DHT11的工作时序如图7.2所示,DHT11控制器在工作之初,首先至少将电平拉低18ms,然后拉高20-40us后等待DHT11的应答;当DHT11检测到信号后,首先将总线拉低约80us然后再拉高80us作为应答信号,工作时序如图7.2(a)所示。
传输数字0时,DHT11拉低总线50us,然后再拉高26us~28us,时序如图(b)所示。
传输数字1时,DHT11拉低总线50us,然后再拉高70us,时序如图(c)所示。
设计1.设计方案在接收DHT11转换数据时,需要将传感器输出的40位串行数据存储为并行数据,然后转化为摄氏温度值和相对湿度百分比的BCD码进行输出。
串行数据并行存储到寄存器的思路是,每读取一次数据,就将用于存放数据的位矢循环左移,直至全部移入。
设计采用状态机模拟FPGA与DHT11之间的通讯与同步,由于DHT11是单总线传感器,对时序的操作只在一根总线上完成,为了确保数据读取的完整和可靠,就必须严格遵循单总线协议。
DHT11的工作时序如图7.2所示,DHT11控制器在工作之初,首先至少将电平拉低18ms,然后拉高20-40us后等待DHT11的应答;当DHT11检测到信号后,首先将总线拉低约80us然后再拉高80us作为应答信号,工作时序如图7.2(a)所示。
传输数字0时,DHT11拉低总线50us,然后再拉高26us~28us,时序如图(b)所示。
传输数字1时,DHT11拉低总线50us,然后再拉高70us,时序如图(c)所示。
设计(a )DHT11的工作时序(一)(b )DHT11的工作时序(二)单总线主机至少拉低18ms主机拉高20-40usDHT 拉高80usDHT 响应信号80us 开始传送数据主机信号DHT 信号主机信号DHT 信号VCCGND1bit 开始50us26-28us 表示‘0’下一bit 开始设计(c )DHT11的工作时序(三)图7.2 DHT11的工作时序图主机信号DHT 信号VCC1bit 开始50us70us 表示‘1’下一bit 开始2.主要程序代码……ENTITY dht11 ISPORT(clk:IN STD_LOGIC; --1us 时钟dht:INOUT STD_LOGIC; --单总线双向端口设计var1,var2,var3,var4:OUT STD_LOGIC_VECTOR(3 downto 0);--湿度整数部分的十位和个位,温度整数部分的十位和个位h0,t0:OUT STD_LOGIC ); --湿度、温度超限报警信号END dht11;ARCHITECTURE caiji OF dht11 ISTYPE s1 IS(state0,state1,state2,state3,state4,state5,state6,state7,state8,state9,state10,state 11,state12);SIGNAL cs1:s1;SIGNAL output,output1:STD_LOGIC_VECTOR(7 DOWNTO 0); --湿度和温度信号SIGNAL dht11_buf:STD_LOGIC_VECTOR(39 DOWNTO 0); --40位数据的寄存器SIGNAL data_out,data_in:STD_LOGIC;SIGNAL data_out_en:STD_LOGIC; --使能控制设计BEGINvar1<=output(7 downto 4);var2<=output(3 downto 0);var3<=output1(7 downto 4);var4<=output1(3 downto 0);data_in <= dht;--双向端口dht读写控制dht <= data_out WHEN data_out_en = '1' ELSE'Z';PROCESS(clk)variable cnt:integer range 0 to 2000000:=0;variable rec:integer range 0 to 50:=0;BEGINIF rising_edge(clk) THEN设计CASE cs1 ISWHEN state0=>IF(cnt>=0 AND cnt<2000000) THEN --每2s读取一次数据data_out_en<='1';data_ out <='1';cnt:=cnt+1;ELSEcnt:=0;cs1<=state1;END IF;WHEN state1=>IF(cnt>=0 AND cnt<18000) THEN --拉低总线至少18msdata_ out _en<='1';data_ out <='0';cnt:=cnt+1;ELSEcnt:=0;cs1<=state2;END IF;设计WHEN state2=>IF(cnt>=0 AND cnt<20) THEN --释放总线20usdata_ out _en <='0';cnt:=cnt+1;cs1<=state2;ELSEcnt:=0;cs1<=state3;END IF;WHEN state3=>IF(data_in='1') THEN --判断是否有响应信号cs1<=state3;ELSEcs1<=state4;END IF;WHEN state4=>IF(data_in='0') THEN --dht11拉低总线cs1<=state4;ELSEcs1<=state5;END IF;设计WHEN state5=>IF(data_in='1') THEN --dht11拉高总线cs1<=state5;ELSEcs1<=state6;END IF;WHEN state6=>IF(data_in='0') THEN --50us低电平开始cs1<=state6;ELSEcs1<=state7;END IF;WHEN state7=>IF(data_in='1') THEN --进入高电平cs1<=state8;END IF;WHEN state8=>IF(cnt>=0 AND cnt<50) THEN --等待50uscnt:=cnt+1;cs1<=state8;设计ELSEcnt:=0;cs1<=state9;END IF;WHEN state9=>IF(data_in='1') THEN --根据高电平维持时间判断读取是0还是1dht11_buf(0)<='1';ELSEdht11_buf(0)<='0';END IF;cs1<=state12;rec:=rec+1;WHEN state12=>IF(rec>=40) THEN --判断40位数据是否已经读取完毕cs1<=state0;rec:=0;dht11_out<=dht11_buf;设计ELSEdht11_buf<=dht11_buf(38 DOWNTO 0) & dht11_buf(39);--循环左移,依次存储串行数据IF(data_in='1') THENcs1<=state10;ELSEcs1<=state11;END IF;END IF;WHEN state10=>IF(data_in='1') THEN--等待1信号由高电平变为低电平,进入下一次判断cs1<=state10;ELSEcs1<=state11;END IF;WHEN state11=>IF(data_in='0') THEN --回到低电平等待状态cs1<=state11;ELSEcs1<=state8;END IF;设计WHEN others=>cs1<=state0;END CASE;END IF;END PROCESS;WITH dht11_buf(39 DOWNTO 32) SELECT--将读取到二进制湿度整数部分转换成对应BCD码(DHT11的湿度测量范围是20%-90%,精度±5,本设计取20%-75%。