CPLD程序写在哪里

CPLD程序写在哪里,第1张

CPLD程序写在CPLD芯片中。用户可以把编译好的CPLD程序通过专用的CPLD程序烧写器烧写到CPLD芯片中,从而实现程序设计的数字逻辑功能。CPLD是在PLD器件基础上发展起来的数字逻辑器件,PLD是指Programmable logic device,即可编程逻辑器件。

CPLD是complex programmable logic device,即复杂可编程逻辑器件。用户可以把编译好的CPLD程序通过专用的CPLD程序烧写器烧写到CPLD芯片中,从而实现程序设计的数字逻辑功能。所以CPLD可以通过编写特定逻辑的硬件程序,代替分立的数字逻辑芯片实现各种数字逻辑的功能。

#include <stdio.h>

int main() {

int i,j,L,W,a,b,dr,dc,rs,cs

int pLd,pWd,vLd,vWd// 板材长、宽方向余料尺寸

int parea,varea    // 余料面积

int amount         // 小料数量

int direction      // 小料方向,长与L平行为0,垂直为1

char select[5]

FILE *fp

char filename[] = "data.txt"

if((fp = fopen(filename,"at")) == NULL) {

printf("\t无法打开数据文件:%s\n",filename)

return 1

}

while(1) {

printf("\t*** 板材下料助手 ***\n\n")

printf("\t1、输入板材及小料尺寸\n")

printf("\t2、显示下料信息\n")

printf("\t3、数据存盘\n")

printf("\t0、退出助手\n\n")

printf("\t请选择:")

scanf("%s",select)

switch(select[0]) {

case '1' : 

printf("\t请输入板材及小料规格:")

while(scanf("%d%d%d%d",&L,&W,&a,&b) != 4)

printf("\t***** 非法数据!请重新输入:")

break

case '2' :

if(!(L && W && a && b)) {

printf("\t***** 缺少板材或小料规格数据。\n")

break

}

pLd = L % a, pWd = W % b// 平行方向下料

parea = L * pWd + W * pLd - pLd * pWd

vLd = L % b, vWd = W % a// 垂直方向下料

varea = L * vWd + W * vLd - vLd * vWd

if(parea > varea) { // 垂直下料更合理

direction = 1

dr = a, dc = b

rs = W / a, cs = L / b

}

else { // 水平下料更合理

direction = 0

dr = b, dc = a

rs = W / b, cs = L / a

}

amount = rs * cs

printf("\t板材规格:%d × %d\n",L,W)

printf("\t小料规格:%d × %d\n",a,b)

printf("\t小料数量:%d\n",amount)

printf("\t下料方向:%s\n",direction ? "垂直" : "水平")

printf("\t余料面积:%d\n",direction ? varea : parea)

printf("\t使 用 率:%.0lf%%\n",100.0 * amount * a * b / L / W)

printf("\t小料位置数据:\n")

for(i = 0 i < rs * dr i += dr) {

for(j = 0 j < cs * dc j += dc)

printf("\t%d,%d\n",i,j)

}

printf("\n")

break

case '3' :

if(!(L && W && a && b)) {

printf("\t*****缺少板材及小料规格数据。\n")

break

}

fprintf(fp,"板材规格:%d × %d\n",L,W)

fprintf(fp,"小料规格:%d × %d\n",a,b)

fprintf(fp,"小料数量:%d\n",amount)

fprintf(fp,"下料方向:%s\n",direction ? "垂直" : "水平")

fprintf(fp,"余料面积:%d\n",direction ? varea : parea)

fprintf(fp,"使 用 率:%.0lf%%\n",100.0 * amount * a * b / L / W)

fprintf(fp,"小料位置数据:\n")

for(i = 0 i < rs * dr i += dr) {

for(j = 0 j < cs * dc j += dc)

fprintf(fp,"%d,%d\n",i,j)

}

fprintf(fp,"\n")

break

case '0' : fclose(fp) return 0

}

}

fclose(fp)

return 0

}

1、"PLD"-可编程逻辑器件:

它是做为一种通用集成电路生产的,逻辑功能按照用户对器件编程来设计。

目前使用的PLD产品主要有:

①现场可编程逻辑阵列FPLA。

②可编程阵列逻辑PAL。

③通用阵列逻辑GAL。

④可擦除的可编程逻辑器件EPLD。

⑤现场可编程门阵列FPGA.其中EPLD和FPGA的集成度比较高。有时又把这两种器件称为高密度PLD。

2、"PLC"-可编程逻辑控制器:

是一种专门为在工业环境下应用而设计的数字运算 *** 作的电子装置。

它采用可以编制程序的存储器,用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等 *** 作的指令,并能通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程。

PLC及其有关的外围设备都应该按易于与工业控制系统形成一个整体,易于扩展其功能的原则而设计。

3、PLC 和PLD的关系:PLC可编程控制器也是计算机家族中的一员,它是为工业控制应用而设计制造的 。

扩展资料:

1、PLC 工作原理:

当可编程逻辑控制器投入运行后,其工作过程一般分为三个阶段,即输入采样、用户程序执行和输出刷新三个阶段。完成上述三个阶段称作一个扫描周期。在整个运行期间,可编程逻辑控制器的CPU以一定的扫描速度重复执行上述三个阶段。

①输入采样:

在输入采样阶段,可编程逻辑控制器以扫描方式依次地读入所有输入状态和数据,并将它们存入I/O映象区中的相应的单元内。输入采样结束后,转入用户程序执行和输出刷新阶段。在这两个阶段中,即使输入状态和数据发生变化,I/O映象区中的相应单元的状态和数据也不会改变。

因此,如果输入是脉冲信号,则该脉冲信号的宽度必须大于一个扫描周期,才能保证在任何情况下,该输入均能被读入。

②用户程序执行:

在用户程序执行阶段,可编程逻辑控制器总是按由上而下的顺序依次地扫描用户程序(梯形图)。

在扫描每一条梯形图时,又总是先扫描梯形图左边的由各触点构成的控制线路,并按先左后右、先上后下的顺序对由触点构成的控制线路进行逻辑运算,然后根据逻辑运算的结果,刷新该逻辑线圈在系统RAM存储区中对应位的状态。

或者刷新该输出线圈在I/O映象区中对应位的状态;或者确定是否要执行该梯形图所规定的特殊功能指令。

③输出刷新:

当扫描用户程序结束后,可编程逻辑控制器就进入输出刷新阶段。在此期间,CPU按照I/O映象区内对应的状态和数据刷新所有的输出锁存电路,再经输出电路驱动相应的外设。这时,才是可编程逻辑控制器的真正输出。

2、PLD分类:

①按集成度划分:

(1)低集成度芯片。早起出现的PROM、PAL、可重复编程的GAL都属于这类,可重构使用的逻辑门数大约在500门以下,称为简单PLD。

(2)高集成度芯片。如现在大量使用的CPLD、FPGA器件,称为复杂PLD。

②按结构划分:

(1)乘积项结构器件。其基本结构为“与-或”阵列的器件,大部分简单PLD和CPLD都属于这个范畴。

(2)查找表结构器件。由简单的查找表组成可编程门,再构成阵列形式。大多数FPGA是属于此类器件。

③按编程工艺划分:

(1)熔丝型器件。早期的PROM器件就是采用熔丝结构的,编程过程是根据设计的熔丝图文件来烧断对应的熔丝,达到编程和逻辑构建的目的。

(2)反熔丝型器件。是对熔丝技术的改进,在编程处通过击穿漏层使得两点之间获得导通,这与熔丝烧断获得开路正好相反。

(3)EPROM型。称为紫外线擦除电可编程逻辑器件,是用较高的编程电压进行编程,当需要再次编程时,用紫外线进行擦除。

(4)EEPROM型。即电可擦写编程软件,现有部分CPLD及GAL器件采用此类结构。它是对EPROM的工艺改进,不需要紫外线擦除,而是直接用电擦除。

(5)SRAM型。即SRAM查找表结构的器件,大部分FPGA器件都采用此种编程工艺,如Xilinx和Altera的FPGA器件。

这种方式在编程速度、编程要求上要优于前四种器件,不过SRAM型器件的编程信息存放在RAM中,在断电后就丢失了,再次上电需要再次编程(配置),因而需要专用的器件来完成这类配置 *** 作。

(6)Flash型。Actel公司为了解决上述反熔丝器件的不足之处,推出了采用Flash工艺的FPGA,可以实现多次可编写,同时做到掉电后不需要重新配置,现在Xilinx和Altera的多个系列CPLD也采用Flash型。

参考资料:百度百科-可编程逻辑控制器

百度百科-PLD


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8173010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存