How-to : 프로그래밍 가능한 로직 가젯 (CPLD)

복잡한 프로그래머블 로직 가젯 (CPLD)은 수많은 7400-serries 논리 IC에 대한 빌딩 블록을 포함합니다. 총 회로는 PC에서 설계 될 수있을뿐만 아니라 즉시 구현을 위해 CPLD에 업로드 할 수 있습니다. CPLD에 연결된 마이크로 컨트롤러는 재 프로그래밍 할 수있는 회로 카드뿐만 아니라 완전한 전자 제품 저장소와 쌍을 이루는 마이크로 컨트롤러와 같습니다.

처음에는 애호가 프로젝트에서 CPLD의 적용뿐만 아니라 넓은 매력을 확신하지 못했지만 우리는 확신을 겪었습니다. 사용자 정의 로직 가젯은 데이터 시트를 읽는 날을 없애고 완벽한 논리 IC 조합을 발견하고 칩을 도착하기 위해 기다리고 있습니다. 회로 보드는 프로그래밍 가능한 핀 배치가있는 단일 칩이 개인 논리 ICS 100을 대체 할 수 있기 때문에 CPLD가 쉽습니다. 회로 오류는 새로운 회로 기판을 채우는 것뿐만 아니라 에칭 대신 새 디자인을 업로드하여 수정할 수 있습니다. CPLD는 100MHz에서 시작하는 반응 시간이 빠릅니다. 극단적 인 다양성에도 불구하고 CPLD는 1 달러로 칩을 갖춘 성숙한 혁신입니다.

우리는 당신을 시작하기 위해 집 에칭 가능하고 자기 프로그래밍 발전위원회가 있습니다. 걱정하지 마십시오.이 보드는 CPLD로 작업하기위한 직렬 포트 인터페이스와 별도의 (일반적으로 병렬 포트) JTAG 프로그래머가 필요하지 않습니다.

소개의 cplds.

CPLD를 사용할 때

스타일이 둘 이상의 7400 시리즈 논리 IC가 필요할 때 CPLD를 사용하는 것을 고려하십시오. CPLD는 더 쉽고 빠르고 쉽게 PCB를 위해 완벽한 핀 출력 구성으로 프로그래밍 될 수 있습니다.

수많은 반복이 필요할 수있는 까다로운 스타일로 cpld를 사용하십시오. 소프트웨어 응용 프로그램에서 새로 회로를 스타일링하고 새로운 회로 기판을 설계, 에칭하는 것보다 CPLD에 업로드하는 것이 더 쉽습니다.

최대 속도뿐만 아니라 즉각적인 응답의 경우 CPLD를 선택하십시오. 속도의 차이는 놀랍습니다. CPLD는 100MHz에서 시작하고 마이크로 컨트롤러는 몇 MHz에서 인터럽트에 응답합니다. CPLD 스타일 외부 자극에 반응하는 회로, 반응은 거의 즉각적으로 발생합니다. 마이크로 컨트롤러가 이벤트에 반응하기 위해 코드를 실행하고 인터럽트 루틴조차도 비교적 높은 대기 시간이 있습니다.

CPLD 대 FPGA.

FPGA는 CPLD보다 훨씬 더 잘 이해되지만 많은 특성을 공유합니다. 이 비유는 완벽하지는 않습니다. 그러나 우리는 그것을 좋아합니다. FPGA가 재 프로그래밍 가능한 프로세서 코어 인 경우, CPLD는 재 프로그래밍 할 수있는 회로 카드 또는 브레드 보드입니다. FPGA는 마이크로 컨트롤러, 메모리 및 기타 구성 요소를 대체합니다. CPLD는 마이크로 컨트롤러와 잘 작동 할뿐만 아니라 로직 ICS를 사용합니다.

제조업 자

Altera뿐만 아니라 가장 큰 CPLD 제조업체 인 자일링스는 FPGA에 훨씬 더 잘 이해되었습니다. Lattice Semiconductor는 이웃이없는 이웃이 적은 하나의 큰 CPLD 제조업체입니다. Atmel은 Old Industry-Standard CPLD의 PIN 호환 버전을 만듭니다.

5Volts에서 일할 계획이라면, 귀하의 선택은 제한됩니다. Xilinx XC9500 CPLD는 여전히 새로운 오래된 주식으로 제공되지만 새로운 3.3Volt 당량보다 4 배 더 비용을 제공합니다. Atmel의 ATF1502 시리즈는 5Volts에서 작동하지만 무료 진보 환경을 제공하지 않습니다.

3.3Volts에서는 더 많은 옵션이 있지만 새로운 CPLD는 점진적으로 2.5Volts, 1.8Volts 또는 낮은 핵심을 가지고 있습니다. Altera Maxii뿐만 아니라 Xilinx XC9500XL 시리즈는 가장 눈에 띄는 3.3Volt CPLD입니다. Xilinx는 coolrunnerii CPLD를 마치면 TQFP 번들에서만 사용할 수있을뿐만 아니라 핵심 1.8Volt 공급이 별도의 공급이 필요합니다.

패키지

대부분의 제조업체는 애호가 친화적 인 PLCC 44 패키지에서 하나 또는 두 개의 CPLD를 제공하지만 사라지기 시작합니다. PLCC는 모든 4면에 핀이있는 SOIC 크기의 표면 설치 칩입니다. PLCC44 소켓은 일반적으로 SMD 버전뿐만 아니라 스루 홀에서 제공됩니다. 불행히도 새로운 CPLD 가정은 PLCC 번들을 제거하기 시작할뿐만 아니라 Xilinx의 Coolrunnerii와 같은 대형 TQFP 칩 만 제공합니다.

개발 환경

대부분의 제조업체는 Verilog 또는 VHDL 외에도 간단한 회로도를 사용하여 스타일 항목을 지원하는 무료 진보 분위기를 제공합니다. 많은 사람들이 무료 버전에서 최신 FPGA를 지원하지 않지만 어쨌든 CPLD 부분 만 요구합니다. 알테라에는 Quartus가 있습니다. Xilinx에는 ISE가 있으며 격자는 isplever가 있습니다. Atmel은 ATF15xx 시리즈를위한 Prochip 디자이너를 가지고 있지만 6 개월 된 평가판 허가를 제공합니다.

프로그래머

PIC 마이크로 컨트롤러가 이미 CPLD를 프로그램하는 이래로 우리가 제시하는 발전 보드는 별도의 JTAG 프로그래머를 요구하지 않습니다. 외부 프로그래머를 원한다면 가장 저렴한 포트 프로그래머 : Xilinx의 병렬 케이블 III뿐만 아니라 Altera를위한 VytleBlaster. 저렴한 클론뿐만 아니라 회로도가 SparkFun에서 제공됩니다. OpenOCD는 많은 CPLD, FPGA, 무기와 함께 작동 할 일반 USB JTAG 프로그래머입니다.

우리의 선택

우리는 궁극적으로 XILINX XC9500XL 시리즈에 정착했습니다.d 저렴한 발전 세트 우리는 전체 디자인을 구현하기 전에 JTAG 프로그래머를 테스트하기 위해 활용할 수 있습니다.

DISILENT의 DO-CPLD-DK에는 XC9572XL, COOLRUNNERII뿐만 아니라 병렬 포트 프로그래머가 포함됩니다. Nu Horizons에는 40 달러의 오래된 Non-Rohs Designs가 있지만 신용 기록 카드 처리 스크립트에서 조잡한 변수 유형 처리로 인해 온라인으로 주문할 수 없었습니다. 우리는 전화로 그것을하려고 노력했지만 웹 사이트 오작동 중에도 전화로 작은 주문을 받기를 거부했습니다. 결국 새로운 Horizon의 엄청난 운송료를 포함해서 DigiKey (# 122-1512-ND)에서 전체 비용을 지불하는 것이 더 쌉니다. 그러나 우리는 일반적 으로이 보드를 사기위한 두 위치만이 우리의 경험을 주목할 가치가있는 두 곳만을 언급하지 않을 것입니다.

CPLD 발전위원회

전체 크기의 개략적 인 그림 (PNG)을 보려면 여기를 클릭하십시오. 회로뿐만 아니라 PCB는 프리웨어 버전의 CADSOFT EAGLE 버전을 사용하여 설계되었습니다. 이 작업의 모든 데이터는 기사 끝에 링크 된 작업 아카이브에 포함됩니다.

회로

PIC 24FJ64GA002 마이크로 컨트롤러 (IC1)는 개인뿐만 아니라 프로그래밍 인터페이스를 CPLD에 제공합니다. 주변 핀 선택 기능이 보드 라우팅을 진정으로 쉽게 만듭니다. 자세한 내용은 PIC24F에 대한 소개를 검사하십시오. 그림은 PC 직렬 포트와 상호 작용해야하므로 저렴한 MAX3232 RS232 트랜시버를 추가해야합니다. 직렬 인터페이스는 USB-> 직렬 어댑터에서 작동해야합니다.

CPLD (IC3), XILINX XC9572XL (PDF)의 옵션은 PIC와 여러 가지 구성 요소와 연결됩니다. 우리는 CPLD 내부의 재 프로그래밍 가능한 로직을 사용하는 다른 칩과 그림 사이의 끝없는 범위의 회로를 생성 할 수 있습니다. 그림은 PC 직렬 포트에서 보낸 코드로 CPLD를 프로그래밍 할 것입니다. 그러나 JTAG 핀을 단순한 외부 디버깅을 위해 헤더로 가져 왔습니다.

DS1085 디지털 프로그래머블 오실레이터 (IC4)는 8KHz뿐만 아니라 133MHz의 클럭 주파수를 10kHz 증가시킨다. 이것은 이전에 다루는 DS1077과 매우 유사하지만 모든 주파수 간의 단계조차도 있습니다. DS1085에는 5Volt Supply (VR2)가 필요합니다. I2C 인터페이스는 5Volts에서 마찬가지로 5Volts에서 실행되므로 5Volt 내각 Pic 핀에 연결했습니다. 3.3Volt 66MHz 1085L 대신 5Volt 공급을 제거 할 수 있습니다.

우리는 저렴한 3.3Volt SOT223 전압 레귤레이터 (VR1)를 활용하여 대부분의 회로를 전력을 공급했습니다. 5Volt Supply (VR2)는 느리게 1085L 3.3Volt 발진기를 사용하는 경우 배제 할 수 있습니다.

CPLD는 일반적으로 메모리 컨트롤러로 활용되므로 전진 보드에 SRAM (IC5)의 32K가 포함되었습니다. 5Volt 내성 입력이있는 3.3Volt 래치는 메모리 입력을 다양한 외부 전압 (IC6)에 인터페이스합니다. 래치 입력은 1MOHM 저항 네트워크 (RN1)가 낮아집니다. 우리는이 섹션을 다가오는 기사에서 광범위하게 논의 할 것입니다.

PCB.

이사회는 준 양면 디자인입니다. 우리는이 극도로 실험적인 PCB를 자신들로 프로토 타입 할 수 있도록 여러 가지 타협을 만들었습니다. 우리는이 보드가 집 에서이 보드를 에칭하고 싶을 수있는 다른 죽을 열심히 보드를 제시합니다. PCB를 보드 하우스로 보내면 ‘진짜’양면 보드를 만들기 전에 이러한 문제를 해결하십시오.

CPLD의 한 전원 핀이 전적으로 디커플링 커패시터가 누락되었습니다. 그 영역에 커패시터를 넣는 방법은 없었다. SRAM 디커플링 커패시터뿐만 아니라 SRAM 디커플링 커패시터의 한 CPLD 디커플링 커패시터는 관통 구멍 부품이다. 이러한 관통 구멍 부위를 사용하여 몇 가지 점퍼 와이어를 제거하십시오.

보드 뒷면의 점퍼 전선은 훌륭한 스타일의 관행보다는 단면 생산에 최적화되어 있습니다. 우리는 전원 버스를 뒤쪽에 납땜하여 양면 보드를 위조했습니다. 정품 양면 보드 스타일은 횡단 신호 경로를 방지하기 위해 전원 버스를 경로해야 할뿐만 아니라 누락 된 디커플링 커패시터가 포함되어야합니다.

우리는 표면 설치 PLCC 칩 소켓을 사용하지만, 스루 홀 버전은 확실히 더 좋은 아이디어입니다. 우리는 SMD 버전이 솔더가 간단 할 것이지만, [악몽]으로 밝혀졌습니다. 우리는 CPLD가 가장 멋진 프리젠 테이션을 위해 보드 앞에있는 CPLD가 진정으로 원했던 것입니다. 도금 된 관통 구멍이있는 적절한 양면 보드는 전면에 관통 구멍 소켓을 가질 수 있지만 1면 프로토 타입 보드에서는 불가능합니다.

부품 목록

전체 크기 배치 다이어그램 (PNG)을 보려면 여기를 클릭하십시오.

부분

IC1.
PIC25FJ64GA002 (SOIC)

IC2.
MAX3232CSE (SOIC-N)

IC3.
XC9572XL-10PCG44C (PLCC)


PLCC44 소켓, SMD.

IC4.
DS1085 또는 DS1085L (SOIC)

IC5.
32KX8, 3.3V, SRAM (SOJ)

IC6.
74LVT573D (SOIC)

vr1.
3.3V 조절기, LD1117S33 (SOT223)

vr2.
5V 레귤레이터, LD1117S50 (SOT223)

C1-11,13-17.
0.1UF 디커플링 커패시터 (0805)

C12.
0.01UF 커패시터 (0805)

C15,16.
0.1uf 디커플링 커패시터 (관통 구멍)

C18.
10UF 탄탈륨 커패시터 (A)

R1,2.
390ohm 저항기 (0805)

r3-5.
2000ohm 저항기 (0805)

rn1.
1MOHM 저항 네트워크 (9 핀)

LED1,2.
LED (08.05)

x1.
DB9 여성 직렬 포트 커넥터 * 테스트되지 않은

j1.
2.1mm 전원 잭

icsp, jtag, sv1.
0.1 “핀 헤더, 직각

S1.
촉각 스위치 (DTSM-6)

펌웨어

펌웨어는 PIC C30 컴파일러의 무료 프리젠 테이션 버전을 사용하여 C로 작성되었습니다. PIC 24F 시리즈에 대한 소개 에서이 사진을 찍는 것에 관한 모든 것을 발견하십시오. 펌웨어는 기사가 끝나면 작업 아카이브에 포함되어 있습니다.

우리는 끝없는 컴파일 프로그램 테스트 사이클이없는 보드의 하드웨어와 상호 작용하는 슈퍼 간단한 방법을 원했습니다. 우리는 DS1085 클럭 칩 (I2C), CPLD 프로그래밍 인터페이스 (JTAG) 및 CPLD에 대한 3 개의 케이블 (SPI) 인터페이스에 대한 간단한 ASCII 터미널 인터페이스를 제공하는 버스 해적 펌웨어의 사용자 정의 버전을 작성했습니다. 펌웨어와 함께 사용되는 간단한 구문에서 배경에 대한 버스 해적 자습서를 검사하십시오.

원래 버스 해적 펌웨어는 동일한 핀을 공유하는 여러 프로토콜을 처리합니다. CPLD 버전의 경우 PIN 할당이 진행 보드의 연결을 형성으로 변경했습니다. 우리는 마찬가지로 사용하지 않는 모듈과 옵션을 제거했습니다.

CPLD 깜박임 LED 예제

Xilinx의 ISE 진보 환경에서 여러 가지 스타일을 준비했습니다. 컴파일 된 스타일 (XSVF)과 컴파일 된 스타일뿐만 아니라 컴파일 된 스타일 (XSVF)은 기사 끝에 링크 된 작업 아카이브에 포함되어 있습니다. ISE의 모든 설명은이 기사의 범위를 벗어납니다. 우리는 이러한 사례를 만드는 데 충분히 유용한 지원 데이터를 발견했습니다.

첫 번째 스타일은 CPLD의 PIN 8에 연결된 LED가 켜집니다.

xsvf 파일을 준비하십시오

XSVF는이 응용 프로그램 노트 (PDF)에서 Xilinx에서 설명하는 압축 된 JTAG 프로그래밍 형식입니다. XSVF는 프로그래밍 xilinx 장치에 제한되지 않고 일반적인 BSDL JTAG 의미 파일을 제공하는 모든 유형의 칩을위한 준비가 될 수 있습니다.

ISE 스타일 스위트 작업 패널에서 대상 장치 -> 충격을 구성하는 효과 프로그래밍 도구를 엽니 다.

제한 스캔 파일을 생성하려면 선택 사항을 선택하고 XSVF 유형을 설정하십시오.

디바이스를 추가하라는 메시지가 나타나면 XSVF 출력 데이터 이름과 데이터 이름을 출력 할 수있을뿐만 아니라 데이터 이름을 출력하십시오.

단일 장치가 포함 된 JTAG 체인이 표시되어야합니다.

가젯을 클릭하고 프로그램을 선택하십시오. 효과 프로그래밍 시퀀스를 XSVF 파일에 기록합니다.

XSVF 데이터를 사용하면 CPLD 프로그램뿐만 아니라 터미널을 열어야합니다. 우리는 Windows의 헤라클레스뿐만 아니라 테라 용어를 좋아합니다. 클라이언트에서 XON / XOFF 흐름 관리가 JTAG 인터페이스를 사용하도록 허용해야합니다. 발전 보드 터미널의 기본 PC 측 설정은 115200bps, 8N1입니다.

히즈> m <-select 모드 1. 히트 2. I2C. 3. JTAG. 4. raw3wire. 모드> 3 <-jtag. 900 모드 설정 602 JTAG 준비 JTAG> (2) <- 재구성 JTAG 체인 매크로 xxx JTAG init 체인 xxx jtagsm : 재설정 xxx jtagsm : 재설정 -> 유휴
xxx jtagsm : IDLE-> 명령어 레지스터 (TMS 용 1 비트 지연)
xxx jtagsm : IR-> 유휴
xxx jtagsm : IDLE-> 데이터 등록기
xxx jtagsm : DR-> 유휴
xxx jtagsm : 재설정
xxx jtagsm : 재설정 -> 유휴
xxx jtagsm : IDLE-> 데이터 등록기
XXX JTAG 체인 보고서 :
0x01 장치 (들)
# 0x01 : 0xc9 0x02 0x06 0x9A <-XC9572XL 응답 xxx jtagsm : DR-> 유휴
JTAG>

터미널에서 우리는 모드 메뉴 (M)에 들어가뿐만 아니라 JTAG (3)를 선택합니다. 매크로 2는 JTAG 체인을 프로브합니다. 우리 상황에서 이것은 단지 CPLD 일뿐입니다. 체인 보고서는 칩이 응답뿐만 아니라 링크 된 것으로 알려줍니다. JTAG 인터페이스에 대해 자세히 확인했습니다.

이제 우리는 XSVF 프로그래머, 매크로 (3)를 실행할 수있을뿐만 아니라 터미널에서 XSVF 데이터를 바이너리 모드로 업로드 할 수 있습니다. 첫 번째 예제는 핀 8에서 LED를 켜지 만 LED가 켜지면 프로그래밍이 성공적 이었음을 확인할 수 있습니다. LED가 가볍지 않으면 절망하지 마십시오. 때로는 JTAG 프로그래머가 스틱뿐만 아니라 재설정 매크로 (1)가 칩을 얻을 수 있습니다.

완전 밝기로 이끌었다.

74LS32 / 4071 또는 게이트, 하프 속도로 깜박임 (/ 2)

CPLD 전진 보드의 주요 요소는 CPLD의 핀 7에 연결된 1085 (L) 주파수 합성기입니다. 다음 예는 74LS32 또는 4071 IC와 같은 로직 또는 게이트를 사용하여 클럭 신호가 높을 때마다 LED를 깜박입니다. 가장 느린 클럭 속도로 깜박임은 쉽게 볼 수 있습니다. 그러나 우리는 첫 번째 예제와 비교하여 멋진 PWM 디밍 충격을 받아야합니다.

JTAG> M <-select 모드 1. 히트 2. I2C. 3. JTAG. 4. raw3wire. 모드> 2 <-i2c 인터페이스 DS1085. 900 모드 설정 202 I2C 준비 I2C> (1) <-address 매크로 찾아보기 XXX BRAING 7BIT I2C 주소 공간. 가제트를 찾았습니다 : 0xB0 0xB1 <- DS1085 주소를 제공합니다 I2C>

이전과 같이 CPLD를 프로그래밍하고 I2C 모드로 전환하여 DS1085 시계에 액세스하십시오. 우리는 Th.에서 가젯 주소를 찾을 수 있습니다

Leave a Reply

Your email address will not be published. Required fields are marked *

Previous post Google은 Fitbit 내장
Next post 금속 도미노