Studyhard/VHDL2010. 1. 8. 00:28
VHDL Basic 1
(1) 
 - 범용 IC : 일반적으로 쓰는 IC
 - 주문형 IC(ASIC): Application Specified Integrated Circuit
                          - 완전 : 개발비 ↑, 개발기간 ↑, LSI 급
                          - 반주문 : CAD설계, VLSI 급 => 완전형에 비해 칩면적이 더 크다

(2) 
 - PLD : Programmable Logic Device
          - 논리 기능을 직접 만들어 쓸 수 있는 IC
          - PROM : Programmable Read Only Memory : 한개의 Decoder, 이차원 OR
          - PLA : Programmable Logic Array : 입력 = AND 설계, 출력 OR설계
          - PAL : Programmable Array Logic : AND 설계, OR 고정, PLA 에 비해 속도↑
          - SPLD : Simple Programmable Logic Device : PAL 형식, GATE 200EA
          - CPLD : Complex Programmable Logic Device : 빠른 성능, 정확한 Timing 예측 
          - FPGA : Field Programmable Gate Array : GATE 수가 많다
CPLD 내부구조
FPGA 내부구조

- FPGA는 CPLD 에 비해 속도가 느리지만, GATE가 더 많다

(3) 칩 제조사
 - ALTERA : MAX, Flex, Apex
 - Xlinx : Virtex FPGA, Spartan
 - Vantis : Actel, Atmel, QuickLogic

(4)
VHDL 이란?
 - Very High speed integrated circuit Hardware Description Language 의 약자
 - 1981. 6~1993년 IEEE 제정
 - CAD 업계 및 IEEE 표준 언어
 - 칩의 집적화에 따라 VHDL 의 중요성 대두 (TR 수 : 486=100만개, 586=310만개, 686=55만개)

VHDL 이전?
 - AHPL(A Hareware Programming Language)
 - CDL(Computer Design Language)
 - C 언어
 - IDL (Interative Design Language)
 - ISPS(Instruction Set Processor Specification)
 - TDL(TEGAS HDL or Texas Instrument HDL)
 - UDL / I (Unfied Design Language for IC)
 - Verilog HDL
 - ZEUS
 - HILO

VHDL 특징
 - 전체적인 설계 비용↓, 쉬운 정보교환, 대규모 설계용이, 재사용이 쉬움
 - 미국 정부는 Hardware 문서화에 VHDL 사용
 - 유럽 연합에서도 채택

문제점
 - 설계 자체를 위한 것들을 위해서는 적합하지 않다
 - 정확한 Timing, 임계 경로의 계산이 어려움
 - 합성도구에 대한 지원 부족
 - 설계 도구들 간의 호환성 결여
 - Hardware Engineer 가 Software 설계 기법에 익숙치 못함
 - 아날로그 시스템 모델링의 어려움 => CAD 업체의 노력으로 극복 중

(5) VHDL 의 표현 방법
 동작적 모델링, 자료흐름 모델링, 구조적 모델링
   동작적 모델링 구조적 모델링 
 칩  알고리즘 MP, RAM, ROM 
 회로  미분 방정식 TR, R, L, C 
 게이트  부울 게이트 
 시스템 설계 명세  컴퓨터, 디스크 
 레지스터 RTL  ALU, 카운터, 레지스터 

(6)VHDL Language 의 특징
 - 대, 소문자 구별 X
 - 주석 은 --
 - Line 의 끝은 ; 
 - Space와 Tab으로 낱말 구분
 - Data Type 변형 용이

(7) VHDL 프로그래밍

AAAA.VHD

library ieee;      -- C언어의 Header File이라 생각하면 됨
use ieee.std_logic_1164.all; --ieee의 std_logic_1164.를 쓰겠다는 의미
   -- use ieee.std_logic_signed.all 도 있으며 다양함 

entity AAAA is             -- Entity 선언 다음에 오는 이름은 파일명과 같아야 한다
port (a, b : in std_logic;    -- 다르게 하고 싶다면
c : out std_logic);  -- Assignment-> Device-> General-> Top-level entity를 바꿔야 한다 
end AAAA;                 

architecture arc of AAAA is  -- arc 부분은 마음대로 쓸 수 있다.(ex :sample , ex 등) 
begin
c <= a and b;
end arc;

--> 사용할 Quartus 6.0은 ALTERA 사에서 WEB EDITION으로 무료로 제공하고 있다.
--> Project 시작시 저장 할 폴더를 귀찮더라도 폴더별로 정리를 하면 나중에 편하므로 폴더별로 저장할 것을 권장한다 



과제 
 AND, OR, NAND, NOR, XOR, XNOR 입력 2개 출력 6개로 설계 하고 시뮬레이션 확인
  


 







Posted by 리얼한놈
Studyhard/Google2010. 1. 6. 13:32
Posted by 리얼한놈
Studyhard/80512010. 1. 5. 05:25
Posted by 리얼한놈
Studyhard/80512010. 1. 5. 05:22
Posted by 리얼한놈
Studyhard/VHDL2010. 1. 5. 00:46

library ieee;     
use ieee.std_logic_1164.all;

entity revstep is
     port(clk        : in std_logic;
            reverse : in std_logic;
            q          : out std_logic_vector(3 downto 0));
end revstep;

 

architecture arc of revstep is
  type state_type is (s0, s1, s2, s3);
  signal state  : state_type;

  signal clock : std_logic;
begin
     process(clk)
       variable cnt : integer range 0 to 49999; --16Mhz, Step Motor Voltage 9V 에서
    begin                                                 -- 5999 최고 속도, 49999 적정 판단
              if (clk'EVENT and clk='1') then    -- Votage 가 더 높아지면 최고 속도가 
                        if (cnt=49999)then             --  더 높아질 것이라고 판단됨
                            clock <= not clock;
                            cnt:=0;
                        else 
                            cnt:=cnt+1;
                        end if;
              end if;
    end process;
  
    process (clock)   -- signal 로 clock 을 설정 해 줌,process 가능
        begin
    IF (clock'EVENT and clock = '1') then
            case state is
                    when s0 => state <= s1;
                    when s1 => state <= s2;
                    when s2 => state <= s3;
                    when s3 => state <= s0;
            end case;
   end if;
   end process;

 

    process(reverse)--reverse 입력에 따른 스텝 모터 Direction 조절
        begin
       if(reverse='0')then
               case state is
                         when s0=>q<="1100";
                         when s1=>q<="0110";
                         when s2=>q<="0011";
                         when s3=>q<="1001";
               end case;
 

       else   
               case state is
                         when s0=>q<="1100";
                         when s1=>q<="1001";
                         when s2=>q<="0011";
                         when s3=>q<="0110";
               end case;
       end if;
 
   
   end process;
END arc;

--------------------------

스텝 모터를 테스트 하기 위한 부분이다.

 

스텝 모터 드라이버는 7026 을 썼고..

 

2상 여자 방식을 썼다..

 

AB/A/B

 

테스트 시에는 스텝 모터가 한 방향으로 무한정 돌아가고..

 

reverse 버튼이 눌렸을 경우 반대 방향으로 돌아가는 걸 확인 할 수 있었다.

Posted by 리얼한놈