5分钟学会CPLD使用-精品教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页5分钟学会使用CPLD当今社会,随着电子行业的发展,大规模集成电路的运用越来越普遍,用CPLD/FPGA来开发新产品是当前很多实际情况的需求。在此本人结合到自己的所学,利用业余时间草写了一个简单的使用说明,不要求有丰富经验的大虾来驻足观望,只希望对吾辈刚入门的菜鸟们起到一个抛砖引玉的作用。由于水平有限,文中错误在所难免,望各位提出宝贵的意见。1.首先请准备一套简单的CPLD原理图。在此我们准备了如下所示的简单一个系统图。晶体用10M的有源晶体,可以在线下载的JTAG接口。电源用5转3.3V的电源模块AS1117。1个1K的排阻。8个发光管在程序运行时轮流点亮。2.安装XILINX的集成编译软件ISE5.0或6.0。因为ISE在运行时比较消耗计算机的内存,所以要求计算机配置符合相关的要求,高一点的配置,不至于在运行时死机。3.准备一小段veriloghdl编写一段小代码,主要用来验证系统板的正确。其中也可以用VHDL来编写,考虑到veriloghdl比较接近C语言,对初级学者来说,相对所花时间较短,上手较快。在此我推荐学veriloghdl。具体的参考书可以看下面的提示:第2页2006-4-284.此我们用下面的一小段代码作为范例:其功能是驱动8个发光管轮流点亮,因为是采用了10M频率晶体的边沿触发,所以速度很快,为了使我们肉眼能够看的清楚其工作的流程,我们在里面安放了一个计数器,计数器计每次满一次就点亮一个发光管,依次类推。。。。。。其源程序如下:/*流水灯的Verilog-HDL描述*/moduleLEDWATER(reset,CLK,LED);inputreset,CLK;output[7:0]LED;reg[7:0]LED;//=8'b11111111;reg[17:0]buffer;//=0;regexchange;always@(posedgeCLK)if(reset==0)//如果复位了就熄灭全部的灯beginLED=8'b1111_1111;buffer=0;exchange=0;endelsebeginif(exchange==0)beginbuffer=(buffer+1);if(buffer==17'b111111111111111111111111)beginbuffer=0;LED=(LED-1);if(LED==8'b0000_0000)beginLED=8'b1111_1111;exchange=1;endendendif(exchange==1)beginbuffer=(buffer+1);if(buffer==17'b111111111111111111111111)beginbuffer=0;LED=(LED1);if(LED==8'b00000000)beginLED=8'b1111_1111;第3页2006-4-28exchange=0;endendendendendmodule注意:VERILOGHDL的代码编写风格,beginend代替了C语言中的大括号{}。5.运行ISE5.0的编译程序,其打开时的界面如下:新建立一个文件,将上面的代码粘贴上面,保存为liushui.v。注意其后縀名为*.V。6.建立工程项目文件。昀好将veriloghdl源文件和工程项目文件放在一个文件包里。便于管理和查找。这里我们放在D:\cpld\liushui下面。(注意在文件目录路径下不要包含文字,避免后面编译出错)。其中综合工具用ISE自带的XSTverilog工具。如下图所示:第4页2006-4-287.点击确定出现如下画面,出现工程项目名称和器件类型,接下来的工作就是准备在工程项目文件中加入HDL的源文件。8.将鼠标移动到工程项目,点击右键,选择addsource:9.在liushui文件包里面选折要假如的liushui.v文件,就意味着把HDL格式的源文件加入到了工程项目中了。第5页2006-4-2810.双击该liushui.v文件,则在右边的编译窗口中出现源文件的详细代码,其中的特殊字符、veriloghdl的关键字会以不同的颜色出现,因为veriloghdl里使用beginend来代替C语言中的{}符号,所以在初学者开始使用时可能很不习惯,我们也可以根据美观的审美标准进行整体宏观调整,使整个原代码看起来比较规范。而不至于调试检查时为了程序结构到处去抓虾。第6页2006-4-2811.接下来的工作是介绍一下左边工程项目框框里的各种功能指示。其中包含约束、综合、实现、配置、下载等细节,这是CPLD/FPGA工作的基本流程,在一些高速电路和特殊处理工程中需要就里面的具体细节进行点滴的处理。以达到其设计的目的。在这里我们不对约束做过分细微地探讨,我们直接进行下面的综合。目的就是将veriloghdl的硬件语言所描述的功能转换成硬件能识别的网表文件,然后通过JTAG下载线将生成的目标文件*.JED文件下载到到XC9572XLCPLD中去。12.点击generateprogrammingfile选择returnall,让ISE直接产生一个可以下载的配置文件,如果我们的源文件没有语法错误、硬件没有冲突的话,编译会很快进行。并出现出现:CompletedprocessGenerateProgrammingFile.字样,如果有错误或是警告,则需要根据相关的提示结合到硬件的特征重新分析、查找,直到没有错误或警告为止。第7页2006-4-28以上的步骤仅仅代表完成了硬件描述语言的综合成功功能,但并不表示能立刻下载到XC9572XL器件中去执行。因为我们还没有给器件赋管脚定义和下载目标代码。13.给管脚重新管脚定义,须双击userconstrants中的assignpackagepings选项,意思就是在约束项里面的重新给管脚分配定义。原来的综合没有指明具体的管脚定义,只完成了初步的编译和综合。其具体方法如下所示:出现如下提示框框,依照里面的提示分别选择器件群族,器件类型、封装形式、速度等级,然后确定。13.打开了chipviewer对话框框就可以在左边看到有INPUT和OUTPUT管脚,打开下面的扩展条,可以看到里面具体的输入、输出管脚定义,用鼠标拖动里面的管脚直接到器件的引脚上面然后释放!!!(这一点比较智能化)。就可以将管脚一一定格在具体的CPLD物理第8页2006-4-28管脚上。如果需要重新调整,则需要将鼠标定格在管脚上,选择REMOVE将管脚释放,然后重新分配。管脚分配好了,可以自己放大看看,ISE以不同的颜色表示其管脚的意思。这里,兰色表示输入、输出。绿色表示复位和时钟等全局信号,如图所示。14.然后保存,重新回到ISE主编译环境下面,再重新编译一次,这次的编译和上次不同,这次是根据我们重新调整过后的管脚重新编译的。编译完了就可以直接利用JATG下载芯片了。第9页2006-4-2815.选择generateprogrammingfile中的configuredeviece直接就可以在线下载。出现了如下的画面,直接确定,JTAG会进行在线扫描检测器件,直到检测到器件为止。JTAG经过扫描,检测到了一个XC9572XL芯片。确定,然后选择要下载的liushui.jed文件。再确定。这个时候我们可以看到XC9572的下方出现了我们选择的liushui.jed目标文件,点击鼠标右键,选择program,则开始下载程序。。。。。。第10页2006-4-28直到出现下载成功提示为止。至此一个完整的CPLD的使用就算基本结束了。结合到实际的使用情况,可以根据源代码进行重新调整,CPLD的运行不用拔掉下载线。可以在运行过程中进行下载配置。每一次的下载也不用上电复位等操作。就这一点来说,对于那些深受下载麻烦之苦的开发者来说的确是个不小的福音。第11页2006-4-28附录:这里用于下载的JTAG需要自己做一个下载器,具体的电路如下的说:

1 / 11
下载文档,编辑使用

©2015-2020 m.111doc.com 三一刀客.

备案号:赣ICP备18015867号-1 客服联系 QQ:2149211541

×
保存成功