实现FPGA对CPLD外的全部利用.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实现FPGA对CPLD外的全部利用

通信与电子系统综合设计 院 系: 信息学院6系 姓 名: 学 号: 邮 箱: cxxie@mail.ustc.edu.cn 手 机: 2013年12月27日 设计一 实现FPGA对CPLD外设的全部利用 实验要求 • 编写CPLD程序控制其外设(LED,数码管,输入开关等),并全部提供给FPGA使用 • 编写CPLD与FPGA(XC2V2000)的接口电路,实现FPGA与CPLD外设的直接对应关系. • 编写FPGA程序测试CPLD的全部外设 实验说明 1.硬件分析 本次实验涉及的硬件包括:4个脉冲触发开关、8个拨码开关、8个7段数码管、32个LED发光二极管以及如图1.1所示的CPLD和FPGA芯片。 图1.1 硬件连接图 2.实验要求分析 要求通过FPGA对CPLD的全部外设进行控制,如果不进行编码则需要4+8+32+16=60根连接线,而实际只有23条,在这种情况下,对于8位拨码开关,可以在CPLD中对进行并串转换,8位需要3位地址线,再用一位表示指定地址的拨码开关的状态,这样就可以用4位将8位拨码开关信号传输到FPGA,在FPGA中将4位表示拨码开关的信号进行串并转换,得到8位信号,然后用这8位信号控制8个7段数码管,用高4位信号表示段码,再用低四位实现功能控制,最多有16种。对于4个脉冲开关,可直接传输,在FPGA中,用这4位信号实现对32位LED发光二极管进行控制;此外,8个7段数码管,需要3根地址线和4根数据线,32个LED发光二极管,需要5根地址线和1位状态位,状态位用来表示指定地址的LED的状态。通过上述分析,总共需要4+4+3+4+5+1=21根连接线,不超过实际的23条连接线,所以上述方案是可实现的。图1.2为FPGA控制CPLD外设的结构示意图。 图1.2 FPGA控制CPLD外设的结构示意图 设计方案 1. CPLD程序设计 CPLD程序分为以下几个功能模块:首先对八位拨码开关信号进行并串转换传输到FPGA中;对脉冲开关信号进行处理,每按一次脉冲开关,经过程序处理得到‘0’或‘1’传输到FPGA;对FPGA传输过来的5位LED地址、数码管3位位选信号和4位段码信号进行译码然后将译码之后的信号传输到外设。CPLD程序主要结构图如如1.3所示。 图1.3 CPLD程序结构图 a) 并串转换 8位拨码开关信号进入CPLD后对其进行并串转换,转换后用4位信号表示,其中高3位表示拨码开关地址,最低位表示开关的状态。在程序模块,用一个3位计数器,每一次时钟上升沿到来时计数器加1,然后根据计数器的值进行选择转换,程序如下: process(clk,dip,counter) begin if(clkevent and clk=1)then if counter=111 then counter=000; else counter=counter+1; end if; end if; case counter is when 000 = dip_sw=000dip(0); when 001 = dip_sw=001dip(1); …… when 111 = dip_sw=111dip(7); when others =dip_sw=111dip(7); end case; end process; b) 脉冲开关信号处理 每按一次脉冲开关,对其脉冲信号进行处理,得到1位信号‘0’或‘1’然后传输到FPGA。其处理的程序如下(4个脉冲开关处理过程一样): process(key1) variable K1 : std_logic; begin if key1event and key1=1 then K1:=not(K1); end if; pul_sw1=K1; end process; c)LED地址译码 5位LED地址信号和1位LED状态信号从FPGA传输到CPLD后要对其进行译码,其代码如下: process(clk) begin if clkevent and clk=1 then case led_addr is when 00000 = led(0)=led_val; when 00001 = led(1)=led_val; …… when 11110 = led(30)=led_val; when others = led(31)=led_val; end case; end if; end process;

文档评论(0)

linjuanrong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档