




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA技术实用教程,第12章(A) 电子系统设计实践,12.1 等精度频率计设计,在此完成的设计项目可达到的指标为:,(1)频率测试功能:测频范围0.1Hz100MHz。测频精度:测频全域相对误差恒为百万分之一。,(2)脉宽测试功能:测试范围0.1s1s,测试精度0.01s 。,(3)占空比测试功能:测试精度199。,12.1 等精度频率计设计,12.1.1 主系统组成,图12-1 频率计主系统电路组成,12.1 等精度频率计设计,12.1.2 测频原理,图12-2 等精度频率计主控结构,设在一次预置门时间Tpr中对被测信号计数值为Nx,对标准频率信号的计数值为Ns,则下式成立:,12-1,不
2、难得到测得的频率为:,12-2,图12-3 频率计测控时序,12.1.3 FPGA/CPLD开发的VHDL设计,占空比 = 12-3,【例12-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
3、; -预置门控制 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; 接下页,ARCHITECTURE behav OF GWDVPB IS SIGNAL BZQ,TSQ : STD_LOGIC_VECTOR(31 DOWNTO 0);-标准计数
4、器/测频计数器 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 0 ) ; ELSIF BCLKEVENT AND BCLK = 1 THEN IF BENA = 1 THEN BZQ = BZQ + 1; END IF; END IF; END PROCESS; TF : PROCESS(TCLK, CLR
5、, ENA) -待测频率计数器,测频计数器 接下页,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; M
6、A = (TCLK AND CL) OR NOT(TCLK OR CL) ; -测脉宽逻辑 CLK1 = NOT MA; CLK2 = MA AND Q1; CLK3 = NOT CLK2; SS = Q2 接下页,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 S
7、S=11 ELSE-EEND为低电平时,表示正在计数,由低电平变到高电平 0 ; -时,表示计数结束,可以从标准计数器中读数据了 BENA ADck ADck=0; lock=0; dclk=1; 接下页,next_ads_state ADck 0); ELSIF lockEVENT AND lock=1 THEN data = D ; END IF; END PROCESS ; ADoe = 0; end ADCTRL;,12.2 高速A/D采样控制设计,图12-8 A/D转换仿真波形,【例12-3】 - TLC5510 采样控制。 library IEEE; use IEEE.STD_LO
8、GIC_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; ar
9、chitecture logi of adctrl is signal lock : std_logic; begin lock 0); ELSIF lockEVENT AND lock=1 THEN data = D ; END IF; END PROCESS ; ADoe = 0; end logi;,12.3 VGA图像显示控制器设计,对于普通的VGA显示器,其引出线共含5个信号:,R、G、B: 三基色信号,HS: 行同步信号,VS: 场同步信号,对这5个信号的时序驱动,对于VGA显示器要严格遵循“VGA工业标准”,即64048060Hz模式,否则会损害VGA显示器。,12.3 VGA图
10、像显示控制器设计,图12-9 VGA行扫描、场扫描时序示意图,12.3 VGA图像显示控制器设计,VGA工业标准要求的频率:,时钟频率(Clock frequency) :25.175 MHz (像素输出的频率),行频(Line frequency):31469 Hz,场频(Field frequency ) :59.94 Hz (每秒图像刷新频率),12.3 VGA图像显示控制器设计,VGA工业标准显示模式要求:,行同步、场同步都为负极性,即同步头脉冲要求是负脉冲。,12.3 VGA图像显示控制器设计,图12-10 VGA图像控制器框图,12.3 VGA图像显示控制器设计,图12-11 FP
11、GA模块实体,12.3 VGA图像显示控制器设计,颜色编码如下:,12.4 直接数字合成器(DDS)设计,正弦信号发生器,它的输出可以用下式来描述:,12-4,用基准时钟clk进行抽样,令正弦信号的相位:,12-5,在一个clk周期Tclk,相位的变化量为:,12-6,12.4 直接数字合成器(DDS)设计,为了对进行数字量化,把切割成2N份,由此每个clk周期的相位增量用量化值来表述:,且 为整数,与12-6式联立,可得:,12-7,12.4 直接数字合成器(DDS)设计,信号发生器的输出可描述为:,12-8,其中 指前一个clk周期的相位值,同样得出,12-9,12.4 直接数字合成器(D
12、DS)设计,图12-12 基本DDS结构,【例12-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 LPM use lpm.lpm_components.all; entity ddsc is - DDS主模块 generic( freq_width : integer := 32; - 输入频率字位宽 phase_width : integer :=
13、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); - 相位字输入 dds
14、out : out std_logic_vector(rom_d_width-1 downto 0); - DDS输出 end entity ddsc; 接下页,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 :
15、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 romad_width, LPM_ADDRESS_CONTROL =
16、 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.h main() int i;float s; for(i=0;i sin_rom.mif;,图12-13 DDS主模块RTL综合结果,基本DDS结构的常用参量计算,(1) DDS的输出频率fou
17、t。,12-10,(2) DDS的频率分辨率 。,12-11,(3) DDS的频率输入字 计算。,注意 要取整,有时会有误差。,【例12-5】 - 简易频率合成器 - DDS(32bit频率字,1024 points 10bit out) - For GW48-CK - Mode: No.1 library 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
18、接口 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主模块 接下页,generic( freq_width : integer := 32; - 输入频率字位宽 phase_w
19、idth : 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 downt
20、o 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 - 例化DD
21、SC port map(clk = clk, ddsout = ddsout, phasein = phaseind, freqin = freqind); clk = sysclk; 接下页,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; el
22、sif(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
23、); signal bclk_t : std_logic; BEGIN process(clk,resetL) 接下页,begin if(resetL = 0) then clk_div 0); bclk_t 0); bclk_t = not bclk_t; else clk_div = clk_div + 1; end if; end if; end process; bclk = bclk_t; end behv;,2. UART接收器,图12-28 UART接收状态机,3. UART发送器,图12-29 UART发送状态机,4. UART设计总模块,图12-30 UART总模块RTL图,下对UART总
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮店承包合同协议书
- 有效利用时间准备2025年注册会计师考试试题及答案
- 2025年证券从业资格证迅速提高试题及答案
- 行政管理师知识更新策略试题及答案
- 行政管理师备考过程中的困惑及答案
- 了解行业2025年特许金融分析师考试试题及答案
- 行政管理师证书考试复习计划制订试题及答案
- 项目管理有效领导力考题试题及答案
- 微生物检验样本采集试题及答案
- 项目管理考试要避掉的误区试题及答案
- 2025世界防治哮喘日知识讲座专题课件
- 粮食安全时政试题及答案
- 小学开展常规教育经验交流活动方案
- 第四单元专题学习《孝亲敬老传承家风》公开课一等奖创新教学设计-(同步教学)统编版语文七年级下册名师备课系列
- 茂名市生活垃圾焚烧发电项目
- 2025年03月四川成都农业科技中心公开招聘笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 大学英语四级考试2024年6月真题(第1套)翻译
- 2024年郑州铁路职业技术学院单招职业技能测试题库必考题
- 2025年03月国家机关事务管理局所属事业单位公开招聘应届毕业生14人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 城市交通中的共享出行模式研究
- 全过程工程咨询投标方案(技术方案)
评论
0/150
提交评论