欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    cpld 数字系统设计课件.ppt

    • 资源ID:1622306       资源大小:2.24MB        全文页数:95页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    cpld 数字系统设计课件.ppt

    基于PLD的数字系统设计,1.PLD的分类,集成度,低密度: PROM,PLA,PAL,GAL,高密度:CPLD,FPGA,结构特点,阵列型的PLD器件(与或阵列):PROM,PLA,PAL,GAL及绝大多数CPLD,单元型的PLD器件(逻辑单元):FPGA,按编程次数分类,按不同的编程元件和编程工艺划分,编程特性,GAL结构与PAL类 似:与阵列可编程改写;与PAL的不同的是:PAL的输出口为定型为缓冲器/驱动器,GAL的输出单元为输出逻辑宏单元(OLMC),其结构和功能可由用户改写。,2、PLD的结构:,(1) PLD的基本结构,输入缓冲电路,输出缓冲电路,或阵列,与阵列,任何组合逻辑电路均可化为“与或”表达式,用“与门或门”二级电路实现。任何时序电路又都是由组合电路加上存储元件(触发器)构成的。,(2)基于乘积项的CPLD的基本结构,这种CPLD主要包括三块结构:逻辑阵列块(LAB):由若干个宏单元(Marocell) 组成,是CPLD内部最基本的结构可编程连线(PIA)I/O控制块,CPLD中的宏单元,乘积项阵列,实际就是一个与或阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑。后面的乘积项选择矩阵是一个“或”阵列。两者一起完成组合逻辑。,可编程D触发器,它的时钟,清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(乘积项阵列)产生的时钟和清零。如果不需要触发器,也可以将此触发器旁路,信号直接输给PIA或输出到I/O脚。,(3)基于查找表(LUT)的FPGA的结构,A: 查找表( Look-Up-Table)例:LUT实现的四输入与门,本质上就是一个RAM FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,输入 A 输入 B 输入C 输入D,查找表输出,实际的16x1RAM结构,多路选择器,FLEX10K系列器件:,LAB:,逻辑单元LE,进位链连通LAB中的所有LE,两种不同的级联方式,连续布线 ( Altera 基于查找表(LUT)的 FPGA ),FPGA/CPLD生产商,LATTICEVANTIS(AMD),ispLSI系列:1K、2K、3K、5K、8K ispLSI1016 、ispLSI2032、 ispLSI1032E、ispLSI3256A MACH系列 ispPAC系列:,其他PLD公司:ACTEL公司: ACT1/2/3、40MXATMEL公司:ATF1500AS系列、40MXCYPRESS公司QUIKLOGIC公司,CPLD,SO MUCH IC!,FPGA CPLD,3、CPLD和FPGA的性能对比,(1) 适合结构 CPLD是 “逻辑丰富” 型的,更适合完成各种算法和组合逻辑, FPGA 是 “时序丰富” 型的,更适合于完成时序逻辑。 原因: CPLD 的一个宏单元可以分解十几个甚至 2030 个组合逻辑输入。而 FPGA 的1 个LUT只能处理4 输入的组合逻辑CPLD 适合用于设计译码等复杂组合逻辑。但 FPGA 的制造工艺确定了 FPGA 芯片中包含的LUT和触发器的数量非常多,集成度更高,而 PLD 一般只能做到512 个逻辑单元,所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,就使用 FPGA。,(2) 运行速度,CPLD优于 FPGA。 因为: CPLD 是逻辑块级编程,且其逻辑块互连是集总式的, CPLD 通过修改具有固定内连电路的逻辑功能来编程;而 FPGA 是门级编程,且LAB 之间是采用分布式互连, FPGA 主要通过改变内部连线的布线来编程。 同时,由于 CPLD 有专用连线每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。因此CPLD 比 FPGA 有较大的时间可预测性,产品可以给出引脚到引脚的最大延迟时间。,(3) 编程方式,目前的CPLD主要是基于 E2PROM或 FLASH存储器编程,编程次数达 1 万次,其优点是在系统断电后,编程信息不丢失,且无需外部存储器芯片,使用简单。CPLD又可分为在编程器上编程和在系统编程( In System Programma2ble , ISP)两种。ISP器件的优点是不需要编程器,可先将器件装焊于印制板,再经过编程电缆进行编程,编程、 调试和维护都很方便。FPGA大部分是基于 SRAM编程其优点是可进行任意次数的编程,并可在工作中快速编程,实现板级和系统级的动态配置,因此可称为可重配置硬件。其缺点是编程信息需存放在外部存储器上,每次上电时,需从器件的外部存储器或计算机中将编程数据写入 SRAM中,使用方法复杂,且编程数据信息在系统断电时丢失。,4、 CPLD和FPGA的编程与配置,根据器件的不同结构 ,基于电可擦除存储单元的 EEPROM或 Flash技术的 CPLD的在系统下载称为编程( Program) ,而把基于 SRAM 查找表结构的FPGA的在系统下载称为配置(Configure),此接口既可作编程下载口,也可作JTAG接口,(1) ALTERA 的 ByteBlaster并行下载方式,ByteBlaster支持两种数据下载模式:,被动串行同步(PS)方式 :可对 ACEX1K, F LEX10K,F LEX6000和 F LEX8000 等器件进行配置;JTAG方式 :具有电路边界扫描测试功能。可对 FLEX10K 系列器件进行配置以及对MAX9000 , MAX7000S 和 MAX7000A 等系列器件进行在线编程。下载时再结合 Altera 提供的仿真软件Max + plus II或者 Quartus 就可以进行编程与配置。,ISP功能提高设计和应用的灵活性,减少对器件的触摸和损伤不计较器件的封装形式,允许一般的存储样机制造方便支持生产和测试流程中的修改,允许现场硬件升级迅速方便地提升功能,未编程前先焊接安装,系统内编程-ISP,在系统现场重编程修改,ByteBlaster程序下载接口,DCLK(时钟信号) CONF DONE (配置控制) , nCONFIG(配置控制) , nSTATUS(配置状态) , DATA0(到器件的数据),TCK(时钟信号) ;TDO(来自器件的数据) ;TMS (JTAG状态机控制) ;TDI(到器件的数据),JTAG模式下对CPLD(MAX7000AE)器件进行编程,多CPLD的ISP方式编程,PS方式下对 FLEX10K器件进行配置,电缆VCC为+5V,不会对3.3V被编程器件造成损坏,多FPGA芯片配置电路,(2) 用专用配置器件配置 FPGA,FPGA 器件有两种配置下载方式:主动配置方式: 由 FPG A器件引导配置操作过程 ,它控制着外部存储器和初始化过程被动配置方式: 由外部计算机或控制器控制配置过程。FPG A 在正常工作时 ,它的配置数据存储在 SRAM中。由于 SRAM的易失性 ,每次加电时 ,配置数据都必须重新下载。实验系统中 ,通常采用外部计算机或控制器进行调试 , 可使用被动配置方式。当数字系统设计完毕需要正式投入使用时 , FPG A将主动从外围专用存储芯片中获得配置数据。FPG A 上电自动配置可采用EPROM,专用的配置器件或 FlashROM等等。,专用专用配置器件配置 FPG A,(3) 单片机配置FPGA,PS模式配置时序,2us,60us,5s,5、设计实例:多路音频采集系统,(1) 设计要求:四路模拟音源的同时实时采集。模拟音源可以是麦克风输出或其它音频设备的模拟音频输出。模拟信号的数字化。系统先将模拟信号数字化后,再通过网络发送。采样率:44.1kHz。采样精度:16位。AGC(自动增益控制)功能。提供至少1KB数据缓冲。,(2) 系统设计及方案选择,需考虑的因素,前置放大器(AIC31)的配置问题;(MCU)A/D变换器的时钟供给问题;(CPLD)数据存储方式: Big endian: 低字节放低地址,高字节放高地址。直观的字节序 Little Endian:符合人类思维的字节序数据缓冲区的大小(4x1K)及缓冲方案: FIFO:数据从一侧流入,另一侧流出。FIFO 具有两套数据线而无地址线。 高速SRAM切换:用两片SRAM构成,在某一时刻, CPLD和DS80C400分时轮流对读写。总线切换电路复杂。 双口 RAM :双口 RAM 具有两套独立的数据、地址和控制总线,可从两个端口同时读写而互不干扰,地址分配问题,CPLD功能块划分:,检测来自微控制器的启动/停止信号;产生对微控制器的中断信号;并控制状态LED。,为AIC31提供时钟信号,接收自AIC31的串行数字音频数据,音频信号的串并转换,并行音频数据的RAM 存储。,产生写RAM的时序, 生成写地址; 接收ADC接口传送的数据,并执行RAM写操作,(3) CPLD接口设计,微控制器接口模块,ADC 接口模块,AIC31的时序,接口图,端口描述,RAM控制模块(ram_control),RAM写时序,(4) 程序设计,A: uc_interface: 模块功能(每个功能对应一个线程)延时st_uc延迟full信号生成irq _uc 信号生成sys_en信号生成led工作指示信号,library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity uc_interface is Port ( reset : in std_logic; clk : in std_logic; st_uc : in std_logic; sys_en : out std_logic; full : in std_logic; irq _uc : out std_logic; led: out sta_logic; ) end ad_interface;architecture Behavioral of ad_interface is此处定义信号 常量begin,延时st_uc,st_uc,clk,st_d1,st_d2,st_d0,CPLD,st_d0,st_d1,st_d2,&,st_d0,st_d1,st_d2,1,st_or,st_and,rocess (reset , clk ) -延时 st_ucbegin if reset = RESET_ACTIVE then st_uc_d0 = 1; st_uc_d1 = 1; st_uc_d2 = 1; elseif clkevent and clk = 1 then st_uc_d0 = st_uc; st_uc_d1 = st_uc_d0; st_uc_d2 = st_uc_d1; endifend process;,rocess ( reset , clk ) -产生 sys_enbegin if reset = RESET_ACTIVE then s_sys_en = 0; elseif clkevent and clk = 1 then if s_sys_en = 0 then if (st_uc_d0 or st_uc_d1 or st_uc_d2 ) = 0 then s_sys_en = 1 endif elseif s_sys_en = 1 then if ( st_uc_d0 and st_uc_d1 and st_uc_d2 ) = 1 then s_sys_en = 0 endif endif endifend process;,rocess ( reset , clk ) -延迟full 信号begin if reset = RESET_ACTIVE then s_full_d0 = 0; s_full_d1 = 0;elseif clkevevt and clk = 1 then s_full_d0 = full; s_full_d1 = s_ full_d0 ;endifend process;,rocess ( reset , clk ) -生成 irq _uc信号begin if reset = RESET_ACTIVE then irq _uc = not IRQ_ACTIVE;elseif clkevevt and clk = 1 then if (full or s_full_d0 or s_full_d1)= 1 then irq_uc = IRQ_ACTIVE; else irq_uc = not IRQ_ACTIVE; endifendifend process;,rocess ( reset , clk ) -生成led 信号begin if s_sys_en = 0 then s_ledcnt 0);elseif clkevevt and clk = 1 then if full = 1 then s_ledcnt = s_ledcnt +1 ; endif;endifend process;led = s_ledcnt ( LEDCNT_WIDTH-1),B: ad_interface,entity ad_interface is Port ( reset : in std_logic; clk : in std_logic; sys_en : in std_logic; sd0 : in std_logic; sd1 : in std_logic; sck : out std_logic; bck : out std_logic; lrck : out std_logic; ds : out std_logic; - data valid stobe, high edge active hlb : out std_logic; lrc : out std_logic; data0 : out std_logic_vector(7 downto 0); data1 : out std_logic_vector(7 downto 0);end ad_interface;,ADC工作特性:,时钟产生器,process(clk, reset) - process to generate the counter begin if reset=RESET_ACTIVE then s_cnt 0); elsif clkevent and clk=1 then s_cnt = s_cnt + 1; end if;end process;,- Output the clock signal -sck = clk;bck = s_cnt(3);lrck = s_cnt(8);,process(reset,clk) - the process to generate the tick signal begin if reset=RESET_ACTIVE then tick = 0; elsif clkevent and clk=1 then if s_cnt(7 downto 0) = 01111111 then tick = 1; else tick = 0; end if; end if; end process;,hlb与lrc信号的判断,数据接收主状态机,音频数据采集示意图,The recieve maim state machine,process(reset,clk)beginif reset = RESET_ACTIVE then state if sys_en = 1 thenstate = waitrecv; elsestate = idle; end if;,when waitrecv = if s_lrck = 1 and s_lrck_d = 0 thenstate if s_lrck = 1 and s_lrck_d = 0 and sys_en = 0 then state state = idle; end case; end if;end process;,the state machine output,process(reset,clk) variable temp : std_logic_vector(2 downto 0); begin if reset = RESET_ACTIVE then s_ds 0); s_data1 0);,elsif clkevent and clk = 1 then if state = recv then temp := s_lrck ,when 001 =- right channel,high byte s_ds - left channel,low byte s_ds = 1; s_data0 = s_shift_reg0; s_data1 = s_shift_reg1; s_hlb = 0; s_lrc = 0;,when 100 = - right channel,low byte s_ds s_ds = 0; s_data0 = s_data0; s_data1 = s_data1; s_hlb = s_hlb; s_lrc = s_lrc; end case;,else s_ds 0); s_data1 0); s_hlb = 0; s_lrc = 0; end if; end if;end process;,process(reset,clk) - process to sample sd0 and sd1 begin if reset = RESET_ACTIVE then s_sd0 = 0; s_sd1 = 0; elsif clkevent and clk = 1 then s_sd0 = sd0; s_sd1 = sd1; end if;end process;,component shift is generic (SHIFT_WIDTH : integer :=8); Port ( clk : in std_logic; en : in std_logic; -shift enable,active high si : in std_logic; q : out std_logic_vector(SHIFT_WIDTH-1 downto 0); end component;,Shift reg instantation,shift_reg0_inst : shift generic map(SHIFT_WIDTH = SHIFT_WIDTH) port map( clk = clk, en = s_shift_reg_en, si = s_sd0, q = s_shift_reg0); shift_reg1_inst : shift generic map(SHIFT_WIDTH = SHIFT_WIDTH) port map(clk = clk, en = s_shift_reg_en, si = s_sd1, q = s_shift_reg1);,shift reg enable control,process(state, s_bck, s_bck_d)begin if state = recv and s_bck = 1 and s_bck_d = 0 then s_shift_reg_en = 1; else s_shift_reg_en = 0; end if;end process;,C: ram_interface,写RAM时序,RAM控制主状态机:,Idle,Write0,Write1,ds rising edge,wccnt = WCCNT_MAX,wccnt = WCCNT_MAX,地址产生器,entity ram_ctrl is generic (ADDR_WIDTH : integer :=12); Port ( reset : in std_logic; clk : in std_logic; ds : in std_logic;- high edge active lrc : in std_logic; hlb : in std_logic; data0 : in std_logic_vector(7 downto 0); data1 : in std_logic_vector(7 downto 0); full : out std_logic; ce : out std_logic; oe : out std_logic; we : out std_logic; addr : out std_logic_vector(ADDR_WIDTH-1 downto 0); data : out std_logic_vector(7 downto 0);end ram_ctrl;,地址计数器,addrcnt_inst : cnt generic map (CNT_WIDTH = ADDRCNT_WIDTH) Port map ( clk =clk, clr =s_addrcnt_clr,-asynchronous clear,active high en =s_addrcnt_en, q =s_addrcnt);,写RAM计数器,wccnt_inst : cnt generic map (CNT_WIDTH = WCCNT_WIDTH) Port map ( clk =clk, clr=s_wccnt_clr,-asynchronous clear, active high en =s_wccnt_en, q =s_wccnt);,process(pre_state,ds,s_ds,s_wccnt) begin case pre_state is when idle = if ds = 1 and s_ds = 0 thennext_state if s_wccnt = WCCNT_MAX thennext_state = write1; elsenext_state = write0; end if;,- The write ram control state machine,when write1 = if s_wccnt = WCCNT_MAX thennext_state next_state = idle; end case; end process;,process(clk,reset)begin if reset = RESET_ACTIVE then pre_state = idle; elsif clkevent and clk = 1 then pre_state = next_state; end if;end process;,计数器控制信号的生成,process(pre_state,s_wccnt,lrc,hlb) begin if (pre_state = write0 or pre_state = write1) then s_wccnt_clr = 0; s_wccnt_en = 1; else s_wccnt_clr = 1; s_wccnt_en = 0; end if;,if pre_state =write1 and s_wccnt = WCCNT_MAX and lrc = 1 and hlb = 0 then - right channel,low byte, indicate one sample has finished s_addrcnt_en = 1; else s_addrcnt_en = 0; end if; end process; s_addrcnt_clr = not reset;,RAM控制信号生成,process(pre_state,s_wccnt,data0,data1,hlb,lrc) begin case pre_state is when idle = s_ce 0); s_hlb 0); when write0 = s_ce = 0; s_we = s_wccnt(WCCNT_WIDTH-1); s_dataout = data0; s_hlb = hlb; s_sel = 0 ,when write1 = s_ce s_ce 0); s_hlb 0); end case;end process;,输出RAM信号,ce = s_ce; oe = 1; we = s_we; data = s_dataout; addr = s_sel ,full信号生成,process(reset,clk) begin if reset = RESET_ACTIVE then s_addr_h = 0; s_full = 0; elsif clkevent and clk = 1 then s_addr_h = s_addrcnt(ADDRCNT_WIDTH-1); if s_addr_h = 1 and s_addrcnt(ADDRCNT_WIDTH-1) = 0 then s_full = 1; else s_full = 0; end if; end if; end process; full = s_full;,感谢您的关注,

    注意事项

    本文(cpld 数字系统设计课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开