第8章电子系统设计优秀PPT.ppt
第8章电子系统设计现在学习的是第1页,共60页8.1 8.1 等精度频率计设计等精度频率计设计在此完成的设计项目可达到的指标为:在此完成的设计项目可达到的指标为:(1)频率测试功能:测频范围)频率测试功能:测频范围0.1Hz100MHz。测频精度:测频全域相。测频精度:测频全域相对误差恒为百万分之一。对误差恒为百万分之一。(2)脉宽测试功能:测试范围)脉宽测试功能:测试范围0.1s1s,测试精度,测试精度0.01s。(3)占空比测试功能:测试精度)占空比测试功能:测试精度199。现在学习的是第2页,共60页8.1 8.1 等精度频率计设计等精度频率计设计8.1.1 主系统组成主系统组成图图8-1 频率计主系统电路组成频率计主系统电路组成现在学习的是第3页,共60页8.1 8.1 等精度频率计设计等精度频率计设计8.1.2 测频原理测频原理图图8-2 等精度频率计主控结构等精度频率计主控结构现在学习的是第4页,共60页 设在一次预置门时间设在一次预置门时间Tpr中对被测信号计数值为中对被测信号计数值为Nx,对,对标准频率信号的计数值为标准频率信号的计数值为Ns,则下式成立:,则下式成立:8-1不难得到测得的频率为:不难得到测得的频率为:8-2图图8-3 频率计测控时序频率计测控时序现在学习的是第5页,共60页8.1.3 FPGA/CPLD开发的开发的VHDL设计设计 占空比=8-3【例例8-1】LIBRARY IEEE;-等精度频率计等精度频率计USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GWDVPB IS PORT(BCLK:IN STD_LOGIC;-CLOCK1 标准频率时钟信号标准频率时钟信号 TCLK:IN STD_LOGIC;-待测频率时钟信号待测频率时钟信号 CLR:IN STD_LOGIC;-清零和初始化信号清零和初始化信号 CL:IN STD_LOGIC;-预置门控制预置门控制 SPUL:IN STD_LOGIC;-测频或测脉宽控制测频或测脉宽控制 START:OUT STD_LOGIC;EEND:OUT STD_LOGIC;-由低电平变到高电平时指示脉宽计数结束由低电平变到高电平时指示脉宽计数结束 SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);-多路选择控制多路选择控制 DATA:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-位数据读出位数据读出 END GWDVPB;接下页接下页现在学习的是第6页,共60页ARCHITECTURE behav OF GWDVPB IS SIGNAL BZQ,TSQ :STD_LOGIC_VECTOR(31 DOWNTO 0);-标准计数器标准计数器/测频计数器测频计数器 SIGNAL ENA,PUL :STD_LOGIC;-计数使能计数使能/脉宽计数使能脉宽计数使能 SIGNAL MA,CLK1,CLK2,CLK3:STD_LOGIC;SIGNAL Q1,Q2,Q3,BENA :STD_LOGIC;SIGNAL SS:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN START=ENA;DATA=BZQ(7 DOWNTO 0)WHEN SEL=000 ELSE-标准频率计数低标准频率计数低8位输出位输出 BZQ(15 DOWNTO 8)WHEN SEL=001 ELSE BZQ(23 DOWNTO 16)WHEN SEL=010 ELSE BZQ(31 DOWNTO 24)WHEN SEL=011 ELSE-标准频率计数最高标准频率计数最高8位输出位输出 TSQ(7 DOWNTO 0)WHEN SEL=100 ELSE-待测频率计数值最低待测频率计数值最低8位输出位输出 TSQ(15 DOWNTO 8)WHEN SEL=101 ELSE TSQ(23 DOWNTO 16)WHEN SEL=110 ELSE TSQ(31 DOWNTO 24)WHEN SEL=111 ELSE-待测频率计数值最高待测频率计数值最高8位输出位输出 TSQ(31 DOWNTO 24);BZH:PROCESS(BCLK,CLR)-标准频率测试计数器,标准计数器标准频率测试计数器,标准计数器 BEGIN IF CLR=1 THEN BZQ 0);ELSIF BCLKEVENT AND BCLK=1 THEN IF BENA=1 THEN BZQ=BZQ+1;END IF;END IF;END PROCESS;TF:PROCESS(TCLK,CLR,ENA)-待测频率计数器,测频计数器待测频率计数器,测频计数器 接下页接下页 现在学习的是第7页,共60页BEGIN IF CLR=1 THEN TSQ 0);ELSIF TCLKEVENT AND TCLK=1 THEN IF ENA=1 THEN TSQ=TSQ+1;END IF;END IF;END PROCESS;PROCESS(TCLK,CLR)-计数控制使能,计数控制使能,CL为预置门控信号,同时兼作正负脉宽测试控制信号为预置门控信号,同时兼作正负脉宽测试控制信号 BEGIN IF CLR=1 THEN ENA=0;ELSIF TCLKEVENT AND TCLK=1 THEN ENA=CL;END IF;END PROCESS;MA =(TCLK AND CL)OR NOT(TCLK OR CL);-测脉宽逻辑测脉宽逻辑 CLK1=NOT MA;CLK2=MA AND Q1;CLK3=NOT CLK2;SS=Q2&Q3;DD1:PROCESS(CLK1,CLR)BEGIN IF CLR=1 THEN Q1=0;ELSIF CLK1EVENT AND CLK1=1 THEN Q1=1;END IF;END PROCESS;DD2:PROCESS(CLK2,CLR)BEGIN IF CLR=1 THEN Q2=0;ELSIF CLK2EVENT AND CLK2=1 THEN Q2=1;END IF;END PROCESS;接下页接下页现在学习的是第8页,共60页DD3:PROCESS(CLK3,CLR)BEGIN IF CLR=1 THEN Q3=0;ELSIF CLK3EVENT AND CLK3=1 THEN Q3=1;END IF;END PROCESS;PUL=1 WHEN SS=10 ELSE-当当SS=10时,时,PUL高电平,允许标准计数器计数,高电平,允许标准计数器计数,0;-禁止计数禁止计数 EEND=1 WHEN SS=11 ELSE-EEND为低电平时,表示正在计数,由低电平变到高电平为低电平时,表示正在计数,由低电平变到高电平 0;-时,表示计数结束,可以从标准计数器中读数据了时,表示计数结束,可以从标准计数器中读数据了 BENA ADck=1;lock=1;dclk=0;next_ads_state ADck=0;lock=0;dclk=1;接下页接下页现在学习的是第14页,共60页next_ads_state ADck=0;lock=0;dclk=1;next_ads_state=sta0;END CASE;END PROCESS;PROCESS(CLK,rst)BEGIN IF RST=0 THEN ads_state=sta0;ELSIF(CLKEVENT AND CLK=1)THEN ads_state=next_ads_state;-在时钟上升沿,转换至下一状态在时钟上升沿,转换至下一状态 END IF;END PROCESS;PROCESS(lock,rst)-此进程中,在此进程中,在lock的上升沿,将转换好的数据锁入的上升沿,将转换好的数据锁入 BEGIN IF RST=0 THEN data 0);ELSIF lockEVENT AND lock=1 THEN data=D;END IF;END PROCESS;ADoe=0;end ADCTRL;现在学习的是第15页,共60页8.2 8.2 高速高速A/DA/D采样控制设计采样控制设计图图8-8 A/D转换仿真波形转换仿真波形现在学习的是第16页,共60页【例例8-3】-TLC5510 采样控制。采样控制。library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity adctrl is port(rst :in std_logic;-复位复位 clk :in std_logic;-采样控制采样控制 Clock 输入;输入;d :in std_logic_vector(7 downto 0);-8位位A/D数据数据 ADck :out std_logic;-TLC5510的的CLK ADoe :out std_logic;-TLC5510的的OE data :out std_logic_vector(7 downto 0);-8位数据位数据 dclk :out std_logic);end adctrl;architecture logi of adctrl is signal lock :std_logic;beginlock=clk;ADck=clk;dclk=not lock;PROCESS(lock,rst)-此进程中,在此进程中,在lock的上升沿,将转换好的数据锁入的上升沿,将转换好的数据锁入BEGIN if rst=0 then data 0);ELSIF lockEVENT AND lock=1 THEN data=D;END IF;END PROCESS;ADoe=0;end logi;现在学习的是第17页,共60页8.3 VGA8.3 VGA图像显示控制器设计图像显示控制器设计对于普通的对于普通的VGA显示器,其引出线共含显示器,其引出线共含5个信号:个信号:R、G、B:三基色信号三基色信号HS:行同步信号行同步信号VS:场同步信号场同步信号 对对这这5个个信信号号的的时时序序驱驱动动,对对于于VGA显显示示器器要要严严格格遵遵循循“VGA工工业业标标准准”,即即64048060Hz模模式式,否否则则会会损损害害VGA显显示器。示器。现在学习的是第18页,共60页8.3 VGA8.3 VGA图像显示控制器设计图像显示控制器设计图图8-9 VGA行扫描、场扫描时序示意图行扫描、场扫描时序示意图现在学习的是第19页,共60页7.3 VGA7.3 VGA图像显示控制器设计图像显示控制器设计VGA工业标准要求的频率:时钟频率(时钟频率(Clock frequency):25.175 MHz (像素输出的频率)(像素输出的频率)行频(行频(Line frequency):):31469 Hz场频(场频(Field frequency):59.94 Hz (每秒图像刷新频率)(每秒图像刷新频率)现在学习的是第20页,共60页8.3 VGA8.3 VGA图像显示控制器设计图像显示控制器设计VGA工业标准显示模式要求:行同步、场同步都为负极性,即同步头脉冲要求是负脉冲。行同步、场同步都为负极性,即同步头脉冲要求是负脉冲。现在学习的是第21页,共60页8.3 VGA8.3 VGA图像显示控制器设计图像显示控制器设计图图8-10 VGA图像控制器框图图像控制器框图 现在学习的是第22页,共60页8.3 VGA8.3 VGA图像显示控制器设计图像显示控制器设计 图图8-11 FPGA模块实体模块实体现在学习的是第23页,共60页8.3 VGA8.3 VGA图像显示控制器设计图像显示控制器设计颜色编码如下:现在学习的是第24页,共60页8.4 8.4 直接数字合成器(直接数字合成器(DDSDDS)设计)设计正弦信号发生器,它的输出可以用下式来描述:正弦信号发生器,它的输出可以用下式来描述:8-4用基准时钟用基准时钟clkclk进行抽样,令正弦信号的相位:进行抽样,令正弦信号的相位:8-5在一个在一个clkclk周期周期T Tclkclk,相位的变化量为:,相位的变化量为:8-6现在学习的是第25页,共60页8.4 8.4 直接数字合成器(直接数字合成器(DDSDDS)设计)设计 为了对进行数字量化,把切割成为了对进行数字量化,把切割成2 2N N份,由此每个份,由此每个clkclk周期的相位增量周期的相位增量用量化值来表述:用量化值来表述:且 为整数与与8-68-6式联立,可得:式联立,可得:8-7现在学习的是第26页,共60页8.4 8.4 直接数字合成器(直接数字合成器(DDSDDS)设计)设计信号发生器的输出可描述为:8-8其中 指前一个clk周期的相位值,同样得出8-9现在学习的是第27页,共60页8.4 8.4 直接数字合成器(直接数字合成器(DDSDDS)设计)设计图图8-12 基本基本DDS结构结构现在学习的是第28页,共60页【例例8-4】-DDSC:DDS主模块主模块library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_UNSIGNED.all;use ieee.std_logic_arith.all;library lpm;-Altera LPMuse lpm.lpm_components.all;entity ddsc is -DDS主模块主模块 generic(freq_width:integer:=32;-输入频率字位宽输入频率字位宽 phase_width:integer:=12;-输入相位字位宽输入相位字位宽 adder_width:integer:=32;-累加器位宽累加器位宽 romad_width:integer:=10;-正弦正弦ROM表地址位宽表地址位宽 rom_d_width:integer:=10);-正弦正弦ROM表数据位宽表数据位宽 port(clk :in std_logic;-DDS合成时钟合成时钟 freqin :in std_logic_vector(freq_width-1 downto 0);-频率字输入频率字输入 phasein:in std_logic_vector(phase_width-1 downto 0);-相位字输入相位字输入 ddsout :out std_logic_vector(rom_d_width-1 downto 0);-DDS输出输出end entity ddsc;接下页接下页现在学习的是第29页,共60页architecture behave of ddsc is signal acc :std_logic_vector(adder_width-1 downto 0);signal phaseadd:std_logic_vector(phase_width-1 downto 0);signal romaddr:std_logic_vector(romad_width-1 downto 0);signal freqw :std_logic_vector(freq_width-1 downto 0);signal phasew :std_logic_vector(phase_width-1 downto 0);begin process(clk)begin if(clkevent and clk=1)then freqw=freqin;-频率字输入同步频率字输入同步 phasew=phasein;-相位字输入同步相位字输入同步 acc=acc+freqw;-相位累加器相位累加器 end if;end process;phaseadd=acc(adder_width-1 downto adder_width-phase_width)+phasew;romaddr rom_d_width,LPM_WIDTHAD=romad_width,LPM_ADDRESS_CONTROL=UNREGISTERED,LPM_OUTDATA=REGISTERED,LPM_FILE=sin_rom.mif )-指向指向rom文件文件 PORT MAP(outclock=clk,address=romaddr,q=ddsout);end architecture behave;下面是产生下面是产生SIN ROM数据值的数据值的C程序:程序:#include#include math.hmain()int i;float s;for(i=0;i sin_rom.mif;现在学习的是第31页,共60页图图8-13 DDS主模块主模块RTL综合结果综合结果现在学习的是第32页,共60页基本基本DDS结构的常用参量计算结构的常用参量计算(1)DDS的输出频率的输出频率fout。8-10(2)DDS的频率分辨率的频率分辨率 。8-11(3)DDS的频率输入字的频率输入字 计算。计算。注意注意 要取整,有时会有误差。要取整,有时会有误差。现在学习的是第33页,共60页【例例8-5】-简易频率合成器简易频率合成器-DDS(32bit频率字频率字,1024 points 10bit out)-For GW48-CK-Mode:No.1library ieee;use ieee.std_logic_1164.all;entity ddsall is port(sysclk :in std_logic;-系统时钟系统时钟 ddsout :out std_logic_vector(9 downto 0);-DDS输出输出 -GW48 接口接口 sel :in std_logic;-输入频率字高低输入频率字高低16位选择位选择 selok :in std_logic;-选择好信号选择好信号 pfsel :in std_logic;-输入频率、相位选择输入频率、相位选择 -频率频率/相位字输入(与相位字输入(与sel、selok配合使用)配合使用)fpin :in std_logic_vector(15 downto 0);end ddsall;architecture behave of ddsall is component ddsc is -DDS主模块主模块 接下页接下页现在学习的是第34页,共60页generic(freq_width:integer:=32;-输入频率字位宽输入频率字位宽 phase_width:integer:=12;-输入相位字位宽输入相位字位宽 adder_width:integer:=32;-累加器位宽累加器位宽 romad_width:integer:=10;-正弦正弦ROM表地址位宽表地址位宽 rom_d_width:integer:=10 -正弦正弦ROM表数据位宽表数据位宽 );port(clk :in std_logic;-DDS合成时钟合成时钟freqin:in std_logic_vector(freq_width-1 downto 0);-频率字输入频率字输入phasein:in std_logic_vector(phase_width-1 downto 0);-相位字输入相位字输入 ddsout :out std_logic_vector(rom_d_width-1 downto 0);-DDS输出输出 end component ddsc;signal clkcnt :integer range 4 downto 0;-分频器分频器 signal clk :std_logic;signal freqind:std_logic_vector(31 downto 0);-频率字频率字 signal phaseind:std_logic_vector(11 downto 0);-相位字相位字 begin i_ddsc :ddsc -例化例化DDSC port map(clk=clk,ddsout=ddsout,phasein=phaseind,freqin=freqind);clk=sysclk;接下页接下页现在学习的是第35页,共60页process(sysclk)begin -GW48-CK 模式模式1;频率字的输入;频率字的输入 if(sysclkevent and sysclk=1)then if(selok=1 and pfsel=0)then if(sel=1)then freqind(31 downto 16)=fpin;else freqind(15 downto 0)=fpin;end if;elsif(selok=1 and pfsel=1)then phaseind=log2(CLK_DIV)cw:integer:=11);PORT(clk :IN STD_LOGIC;resetL :IN STD_LOGIC;bclk :OUT STD_LOGIC);END baud;ARCHITECTURE behv OF baud IS constant CLK_DIV_coef:integer:=XTAL_CLK/(BAUD*16*2);SIGNAL clk_div :STD_LOGIC_VECTOR(cw-1 downto 0);signal bclk_t :std_logic;BEGINprocess(clk,resetL)接下页接下页现在学习的是第52页,共60页begin if(resetL=0)then clk_div 0);bclk_t=0;elsif(clkevent and clk=1)then if(clk_div=clk_div_coef)then clk_div 0);bclk_t=not bclk_t;else clk_div=clk_div+1;end if;end if;end process;bclk=bclk_t;end behv;现在学习的是第53页,共60页2.UART2.UART接收器接收器图图8-28 UART接收接收状态机状态机现在学习的是第54页,共60页3.UART3.UART发送器发送器图图8-29 UART发送状发送状态机态机现在学习的是第55页,共60页4.UART4.UART设计总模块设计总模块图图8-30 UART总模块总模块RTL图图现在学习的是第56页,共60页下对下对UART总模块中涉及的外部端口作简要说明:总模块中涉及的外部端口作简要说明:时钟信号clk(输入)复位信号resetL(输入)16时钟bclk(输出)UART发送txd(输出)发送缓冲xbuf(输入)发送命令xmit_cmd(输入)发送完成xmit_done(输出)UART接收rxd(输入)接收缓冲rbuf(输出)现在学习的是第57页,共60页实实 验验 根根据据以以上上给给出出的的6 6个个项项目目的的设设计计原原理理和和示示例例,分分别别或或综综合合进进行行针针对对某某一一课课程程要要求求的的设设计计实实验验,如如作作为为毕毕业业设设计计课课题题、电电子子设设计计竞竞赛赛实验练习题,或课外科技活动的练习。实验练习题,或课外科技活动的练习。在在这这些些设设计计项项目目中中除除了了需需要要熟熟悉悉VHDLVHDL、EDAEDA软软件件应应用用和和FPGAFPGA开开发发外外,还还需需了了解解许许多多其其它它的的电电路路设设计计知知识识、开开发发技技术术和和在在EDAEDA实实验验系系统统上上的的硬硬件件实现方法,例如:实现方法,例如:电子设计综合实验电子设计综合实验现在学习的是第58页,共60页实实 验验 对对于于“等等精精度度频频率率计计设设计计”,还还必必须须熟熟悉悉单单片片机机汇汇编编语语言言,各各种种算算法法程程序序的的编编写写方方法法、了了解解FPGA和和单单片片机机的的接接口口以以及及用用于于待测信号输入的高速整形器件的应用。待测信号输入的高速整形器件的应用。对于对于“高速高速A/D采样控制设计采样控制设计”,还必须熟悉高速,还必须熟悉高速A/D器件器件TLC5510的使用方法,的使用方法,FPGA与与RAM的接口或的接口或FPGA中中EAB的使用方的使用方法等。法等。对对于于“VGA图图象象显显示示控控制制器器设设计计”,则则要要详详细细了了解解VGA显显示示器器的的工工作作原原理理和和输输入入端端口口的的功功能能。如如果果希希望望用用FPGA和和单单片片机机控控制制液液晶晶VGA显示器,以便完成各种形式的动态显示,则需了解更多的知识。显示器,以便完成各种形式的动态显示,则需了解更多的知识。电子设计综合实验电子设计综合实验现在学习的是第59页,共60页实实 验验 对对于于“直直接接数数字字合合成成器器(DDS)设设计计”,十十分分重重要要的的是是了了解解DDS的实现原理和高速的实现原理和高速D/A器件的使用方法及与器件的使用方法及与FPGA的接口。的接口。对于对于“使用使用IP Core设计设计FIR滤波器滤波器”,要了解,要了解FIRFIR的的实现原理及高实现原理及高速速A/D和和D/A器件的使用方法,以及器件的使用方法,以及IP核的获得及其使用方法。核的获得及其使用方法。对对于于“通通用用异异步步收收发发器器(UART)设设计计”,要要了了解解PCPC机机的的串串行行接接口口技技术术和和上上位位机机与与FPGAFPGA通通信信程程序序的的设设计计方方法法,以以及及RS232RS232接接口口电电路路的的设计方法。设计方法。电子设计综合实验电子设计综合实验现在学习的是第60页,共60页