CPLD实现电路设计.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CPLD实现电路设计 概述 可编程逻辑器件PLD(Programmable Logic Device)是一种半定制集成电路,在其内部集成了大量的门和触发器等基本逻辑电路。 用户可以通过编程来改变PLD内部电路的逻辑关系或连线,得到所需要的设计电路。 PLD的分类 世界著名的半导体器件公司: Altera、Xilinx、AMD、Lattice、Atmel、Actel公司等 PLD开发系统 硬件部分 001181092-Xilinx实验仪 (1)XC95108芯片 (2)JTAG 接口 (3)输入部分:按键 时钟 电源输入口 (4)输出部分:LED显示 数码管显示 软件部分 开发软件: 设计应用软件(集成化开发系统软件) Xinlinx 公司的WEBPACK Lattice 公司的ISP Synario System 开发语言: 硬件描述语言(HDL,Hardware Description Language) VHDL(VHSIC HDL, Very High Speed Integrated Circuit HDL) ABEL(Advanced Boolean Equation Language) Verilog HDL PLD的开发流程 Xilinx 集成软件环境 ISE (Integrated Software Environment) 设计步骤: 1.设计输入:原理图、硬件描述语言编程 2.综合(Synthesize):将原理图、HDL文本等设计输入转换成由门电路、RAM、寄存器等基本逻辑单元组成的逻辑连接,并根据约束条件进行优化。 3.实现(Implementation):将综合结果与具体器件内物理结构、电气特性进行适配。依据设计输入文件生成用于器件编程、波形仿真等所需的数据文件。 4.下载验证:将目标编程文件即JEDEC(Joint Electronic Device Engineering Council)文件下载到器件中,对系统进行验证。 Verilog HDL语言 Verilog HDL语言 结构描述方式:调用实例元件 数据流描述方式:使用连续赋值语句 行为描述方式:使用过程模块(initial、always) 混合描述 L:\学生作业\数字电路\时序 二进制计数器 module cp100ms(clk,cp,shifter); input clk; output cp; output [1:0] shifter; reg [20:0] count; always@(negedge clk) begin if (count==21h86FFF) count=21h179000; else count=count+1; end assign cp=count[20]; assign shifter=count[16:15]; endmodule * * 通用集成电路(例:标准逻辑电路、通用存储器) 数字电路 专用集成电路(例:可编程逻辑器件PLD) 计算机 硬件部分 PLD 开发系统 编程软件 软件部分 编程语言 逻辑设计 设计输入 ·原理图 ·硬件描述语言 ·波形图 功能仿真 设计处理 ·优化、综合 ·适配、分割 ·布局、布线 时序仿真 器件编程 器件测试 设计完成 设 计 模 块 模块端口定义 I/O说明 功能描述 模块内容 信号类型说明 十进制计数器 module cnt10(clk,cnt); input clk; output [3:0] cnt; reg [3:0] cnt; always@(negedge clk) begin if (cnt==9) cnt=0; else cnt=cnt+1; end endmodule 二十四进制计数器 module cnt24(clk,cnt24h,cnt24l); input clk; output [3:0] cnt24h,cnt24l; reg [3:0] cnt24h,cnt24l; always@(negedge clk) begin if ({cnt24h,cnt24l}==8h23) {cnt24h,cnt24l}=8h0; else if (cnt24l==9) begin cnt24l=0; cnt24h=cnt24h+1; end else cnt24l=cnt24l+

文档评论(0)

ygxt89 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档