您当前的位置:五五电子网电子知识单元电路接口电路单片机与CPLD的串行接口方法 正文
单片机与CPLD的串行接口方法

单片机与CPLD的串行接口方法

点击数:7919 次   录入时间:03-04 11:58:09   整理:http://www.55dianzi.com   接口电路

  在单片机应用系统扩展外围接口时,采用复杂可编程逻辑器件CPLD将外围的数字电路集成到一片CPLD中,用VERILOG HDL语言对所要实现的功-能进行描述是一个不错的方案。本文介绍单片机与CPLD的串行接口方法。

  所谓串行连接即是单片机将数据一位一位地传给CPLD,其优点是节省端口、稳定可靠,缺点是速度慢。下面通过一个简单实例说明数据的传送过程。设要将十六进制数AAH传送给CPLD内部逻辑寄存器,使连接在CPLD上的八位发光二极管发光,单片机的P1.O口是数据输出口,P1.1口作为数据移人CPLD的时钟,则程序如下:

  #include<reg51.h>

  sbit sda=p1.O:

  sbit SCK=p1.1:

  unsign char shift counter=0xaa;main(){for  (shift_counter  =0;shift_counter<8;shift_counte++)if((c《shift_counter)&0x80)sda=1;else sda=O._nop ();sck=1;_nop();sck=0:}

  在CPLD内部。用VERILOG HDL硬件描述语言设计一个串人并出的移位寄存器。寄存器的数据送给输出口SMG。VERILOG模块如下:

  module SHIFT {ENA,key,SDA,SCK,SMG);input SDA,SCK;reg i;output[7:o]SMG;//变量声明reg  【7:0】SMGR;always @(negedge SCK)beginSMGR【0】=SDA;for(i=1;i<8;i=i+1)//循环移与8位数据SMGR[i]<=SMGR[i一1];endassign SMG【7:0】=SM-GR[7:O】;//输出分配endmodule控制好时钟是接收数据的关键,必须每8个时钟接收一个数据,才能使CPLD正确地接收单片机发出的数据。

  分别将上边的程序写入单片机和CPLD,通电后会发现八只发光二极管的状态,奇数位点亮正好相当于十六进制的AA。




本文关键字:单片机  接口  接口电路单元电路 - 接口电路