微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 应用CPLD实现交通控制系统芯片设计

应用CPLD实现交通控制系统芯片设计

时间:08-06 来源:互联网 点击:
集成电路的发展经历了从小规模、中规模、大规模和超大规模集成的过程,但随着科学技术的发展,许多特定功能的专用集成电路(ASIC)应用日益广泛,用户迫切希望根据自身设计要求自行构造逻辑功能的数字电路。复杂可编程逻辑器件CPLD(Complex
Programmable Logic Devices)顺应了这一新的需要。它能将大量逻辑功能集成于1个芯片中,其规模可达几十万或上百门以上。用CPLD开发的数字系统个有容量大、速率快、成本低的特点,且开发灵活、开发周期短。

1 器件结构和开发软件

1.1FLEX10K简介
  
FLEX系列可编程逻辑器件是美国Altera公司主力推出的产品。FLEX10K是该系统器件中的典型代表。与许多PLD器件一样,它有在线可配置(ISR)功能和高密度、高速度的优点;作为工业界第1个嵌入式PLD,它还采用重复可构造的CMOSSRAM工艺,把连续的快速通道互连与独特嵌入式阵列结构相结合,来完成普通门阵列的宏功能。每个FLEX10K器件还1包括个嵌入式阵列和1个逻辑阵列,能让设计人员轻松地开发集成存储器、数字信号处理器及特殊逻辑功能等强大的功能于一身的芯片。图1为其结构图。FLEX10K主要由逻辑阵列(logicarray)、嵌入式阵列(EAB)构成。其中,逻辑阵列是由多个逻辑阵列块(LAB)组成的,而每个逻辑阵列块(LAB)又包含8个逻辑单元(logicelement),在每行、列互连通道的两端都有输入/输出单元(IOE)。



1.2 MAX+PLUSII开发软件特点和设计流

用CPLD实现数字系统设计电路,关键技术是必须有一个优秀的开发软件。Altera公司的开发软件MAX+PLUS
II界面丰富,使设计灵活、方便、高效。

(1)开放的界面

MAX+PLUS II软件可与其它工业标准设计输入、综合与校验工具相连接。设计人员可以使用Altera或标准EDA设计输入工具来建立逻辑设计,对器件设计进行编译,并能使用Altera或其EDASF校验工具进行器件仿真。

(2)完全集成化的环境

它是一个完全集成化、易学易用的可编程逻辑设计环境,设计输入方式有图形输入、文本输入、波形输入、状态机设计输入。其编译及设计处理写仿真、定时分析、逻辑综合与适配均为Windows图形界面。

(3)支持各种硬件描述语言

支持各种HDL设计输入选项,包括VHDL、VerilogHDL、ABEL、AHDL等硬件描述语言。

(4)丰富的设计库

提供丰富的库单元设计调用,包括74系列的全部器件和多种特殊的逻辑宏功能、新型的参数化兆功能。对于复杂的大系统,设计者需调用宏单元库,并对其修改某些参数,而无需自己用基本逻辑单元来构成某种功能,以大大减轻设计人员的工作量,缩短设计周期。

电路的设计流程如图2所示。将所设计的电路用原理图输入和硬件描述语言输入,应用EDA软件平台(MAX+PLUS II)编译通过后,再进行逻辑功能仿零点,生成目标文件,下载到FLEX10K芯片,完成系统设计。

2 交通控制系统设计

2.1 系统介绍
  
图3为一十字路口交通管理器,控制甲、乙2道的红、黄、绿3色灯。计数显示部分为2个倒计时器,显示甲、乙车道允许通车时间,指挥车辆和行人安全通行。其R1、Y1、G1为甲道红、黄、绿灯;R2、Y2、G2为乙道红、黄、绿灯。
  
甲道通告时间为t3,乙道通行时间为t2,黄灯亮(停车)时间为t1,C1、C2、C3为定时器工作使能信号,为1时定时器计数;W1、W2、W3为定时器的指示信号,计数时信号为0,计数结束时信号为1。

2.2 FLEX10K内部逻辑功能设计
  
交通控制系统芯片内部逻辑功能设计采用自顶向下的设计方法,系统顶层电路如图4所示。它分为5个次级模块:控制器(traffic_control)、定时器1、定时器2、定时器3、(其定时时间为t3、t2和t1)、计数显示(含减法计数器和动态扫描电路)。
  
顶层电路图中减法计数器和动态扫描电路用图形输入描述,其它次级模块控制器、定时器1、定时器2、定时器3用VHDL硬件语言描述。核心模块控制器的VHDL源文件如下:

LIBRARY ieee;
use ieee.std_logic_1164.dll;
entity traffic_control is
PORT(
clk :IN STD_LOGIC;
c1,c2,3 :OUT STD_LOGIC;
w1,w2,w3 :IN STD_LOGIC;

r1,r2 :OUT STD_LOGIC;
y1,y2 :OUT STD_LOGIC;
g1.g2 :OUT STD_LOGIC;
reset :IN STD_LOGIC);
END traffic_control;
ARHITECTURE a OF traffic_control IS
TYPE STATE_SPACE IS(S0,S1,S2,S3);
SIGNAL state:STATE_SPACE;
BEGIN
PROCESS(slk)
BEGIN
IF reset='1'THEN
State<=S0;
ELSIF(clk EVENT AND clk='1')THEN
CASE state IS
WHEN S0=>
IF w1='1'THEN
state<s1;
END IF;
WHEN S1=>
IF w2='1'THEN
state<=s2;
END IF;
WHEN S2=>
IF w3='1'THEN
State<=s3;
END IF;
WHEN S3=>
IF w2='1'THEN
state<=s0;
END IF;
END CASE;
END IF;
END PROCESS;
c1<='1'WHEN state=s0 ELSE'0'
c2<='1'WHEN state=S1 OR state=S3 ELSE '0'
c3<='1'WHEN state=s2 ELSE'0';
r1<='1'WHEN state=S1 OR state=S0 ELSE '0'
y1<='1'WHEN state=s3 ELSE'0';
g1<='1'WHEN state=s2 ELSE'0';
r2<='1'WHEN state=S2 OR state=S3 FLES'0';
y2<='1'WHEN state=S1 ELSE'0';
g2<='1'WHEN state=S0 ELSE'0';
END a;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top