5 分钟学会使用CPLD
5 分钟学会使用CPLD来源说明:http://www.00ic.com/Download/6cc19d05628bd8bf.html
附件有1个:
1.learn to use CPLD.pdf 5 分钟学会使用CPLD
当今社会,随着电子行业的发展,大规模集成电路的运用越来越普遍,用CPLD/FPGA来开发新产品是当前很多实际情况的需求。在此本人结合到自己的所学,利用业余时间草写了一个简单的使用说明,不要求有丰富经验的大虾来驻足观望,只希望对吾辈刚入门的菜鸟们起到一个抛砖引玉的作用。由于水平有限,文中错误在所难免,望各位提出宝贵的意见。
1. 首先请准备一套简单的CPLD 原理图。在此我们准备了如下所示的简单一个系统图。晶体用 10M 的有源晶体,可以在线下载的JTAG 接口。电源用5 转3.3V 的电源模块AS1117。1 个1K 的排阻。8 个发光管在程序运行时轮流点亮。
2.安装XILINX 的集成编译软件ISE5.0 或6.0。因为ISE 在运行时比较消耗计算机的内存,所以要求计算机配置符合相关的要求,高一点的配置,不至于在运行时死机。 本帖最后由 lcytms 于 2016-9-9 17:25 编辑
3.准备一小段verilog hdl 编写一段小代码,主要用来验证系统板的正确。
其中也可以用 VHDL 来编写,考虑到verilog hdl 比较接近C 语言,对初级学者来说,相对所花时间较短,上手较快。在此我推荐学verilog hdl。具体的参考书可以看下面的提示: 4. 此我们用下面的一小段代码作为范例:其功能是驱动8 个发光管轮流点亮,因为是采用
了10M 频率晶体的边沿触发,所以速度很快,为了使我们肉眼能够看的清楚其工作的
流程,我们在里面安放了一个计数器,计数器计每次满一次就点亮一个发光管,依次类
推。。。。。。其源程序如下:
/* 流水灯的Verilog-HDL 描述 */
module LEDWATER(reset,CLK,LED);
input reset, CLK;
output LED;
reg LED;//=8'b11111111;
reg buffer;//=0;
reg exchange;
always@(posedge CLK)
if(reset==0) //如果复位了就熄灭全部的灯
begin
LED=8'b1111_1111;
buffer=0;
exchange=0;
end
else
begin
if (exchange==0)
begin
buffer=(buffer +1);
if ( buffer == 17'b111111111111111111111111)
begin
buffer=0;
LED=(LED-1);
if(LED==8'b0000_0000)
begin
LED=8'b1111_1111;
exchange=1;
end
end
end
if(exchange==1)
begin
buffer=(buffer +1);
if ( buffer == 17'b111111111111111111111111)
begin
buffer=0;
LED=(LED>>1);
if(LED==8'b00000000)
begin
LED=8'b1111_1111;
exchange=0;
end
end
end
end
endmodule
注意:VERILOG HDL 的代码编写风格,begin end 代替了C 语言中的大括号{}。 5. 运行 ISE5.0 的编译程序,其打开时的界面如下:
新建立一个文件,将上面的代码粘贴上面,保存为 liushui.v。注意其后缀名为*.V。 6.建立工程项目文件。
最好将verilog hdl 源文件和工程项目文件放在一个文件包里。便于管理和查找。这里我们放在D:\cpld\liushui 下面。(注意在文件目录路径下不要包含文字,避免后面编译出错)。其中综合工具用ISE 自带的XSTverilog 工具。如下图所示: 7.点击确定出现如下画面,出现工程项目名称和器件类型,接下来的工作就是准备在工程项目文件中加入HDL 的源文件。 8.将鼠标移动到工程项目,点击右键,选择add source:
9.在liushui 文件包里面选折要假如的liushui .v 文件,就意味着把HDL 格式的源文件加入到了工程项目中了。