FPGA로 프로세서 디자인을 얻는 방법


20

나는 최근에 자기 교육 논리 설계에 대한 긴 항해를 갔다. 이 제품의 최종 제품은 시뮬레이터에서 설계된대로 작동하는 기능적인 16 비트 CPU입니다 . 이제는 FPGA를 통해 실리콘에 넣을 가능성을 조사하기 시작했습니다. 입력 / 출력 영역 (실제 환경이 시뮬레이션 환경과 다름)을 많이 조정해야하며, 넷리스트 또는 HDL 코드를 내 보내지 않는 프로그램에서 디자인을 완전히 수행했음을 발견했습니다. 제가 가진 모든 것은 회로도입니다.

그러나 어떻게 든 내 디자인의 넷리스트 또는 HDL 코드가있는 시점에 도달한다고 가정하면 실리콘으로 가져 오는 다음 단계는 무엇입니까? 지금까지 읽은 내용과는 달리 FPGA가 내 솔루션 인 것처럼 보이지만 Xilinx 및 Altera 웹 사이트를 살펴보면 머리가 회전합니다. 내가 잘못된 나무를 짖고 있습니까? 기본적으로, 나는 CPU의 기능적 회로도를 가진 사람을 위해 다음 단계가 무엇인지에 대한 명확한 영어 설명을 찾고 있습니다. 내가 어떤 방향으로 가야하는지 알게되면, 나는 책을 깨뜨리고 그곳에가는 방법에 대해 알아야 할 모든 것을 알아낼 수 있습니다. 참고로, 나는 Mac OS X에 있지만 절대적으로 필요한 경우 연결할 수있는 Window XP 상자가 있습니다.


어떤 프로그램 않았다 당신은 당신의 디자인에합니까? 타사 변환기가있을 수 있습니다.
코너 울프

답변:


17

CPU 디자인을 축하합니다. 그렇습니다. FPGA 는 확실히 다음 단계입니다. 그러나 머리가 어떻게 돌아가는지 명확하지 않습니다. 나는 그것이 제공하는 많은 다른 장치라고 생각합니다. 또한 어떤 시뮬레이터를 사용하고 있는지 말하지 않습니다.
설계를 합성 할 때 신시사이저는 게이트 수 및 RAM과 같은 사용 된 리소스에 대한 보고서를 제공해야합니다 . 이를 통해 설계에 적합한 부품이 무엇인지 알 수 있습니다. 헤드 룸 이 충분한 지 확인하십시오 . 여분의 RAM 이있는 부분을 선택하십시오.이 부분은 CPU에서 프로그램을 실행해야합니다.

편집 (의견)
특정 제조업체를위한 개발 시스템이 필요합니다. 알테라자일링스 는 큰 선수이며 둘 다 신자가있다. 어느 것이 당신이 선택하는 것이 그렇게 중요하지 않은지, 둘 다 귀하의 요구를 충족시키기에 충분한 다른 부분을 가지고 있습니다.
Xilinx를 선택한다면 무료로 제공되는 ISE WebPACK Design Software 가 있습니다 (3.4GB에서 큰 다운로드). 현재 고급 버전의 소프트웨어와 비교할 때 제한 사항이 귀찮게해서는 안됩니다.
다음으로 개발 보드가 필요합니다. 어떤 FPGA를 선택해야하는지 알아야합니다. 자일링스로 가면 스파르타를 고를 것입니다아마도 스파르탄 -6의 버텍스는 이미 너무 높은 수준의 IMO 일 것입니다. 여전히 보드상의 엑스트라가 다른 많은 사람들이 여전히 선택하고 있습니다. 스위치와 LED가 약간 넘는 보드가 필요합니다. 키보드 커넥터와 디스플레이 모듈을 찾아 볼 것입니다.
자일링스는 다수의 보드를 가지고 있으며 자일링스 FPGA에는 Digilent , Avnet , Xess 등이있다.

따라서 여러 보드를 비교하고 (가격도 일부 역할을 할 것입니다.) 사용하려는 FPGA 용 개발 소프트웨어를 다운로드하십시오. 디자인을 합성하여 선택한 FPGA에 맞는지 확인한 후이 FPGA 주변의 보드를 구입할 준비가되었습니다.

FPGA에 대해 조금 이야기하는 것을 잊었습니다. FPGA는 기본적으로 프로그래밍 가능한 연결을 갖춘 대규모 게이트 모음으로, 거의 모든 로직 기능 / 시스템을 생성 할 수 있습니다. 여러 세대에 걸쳐 FPGA는 더욱 발전하여 이제는 RAM과 같은 효율적인 기능을 생성하기 위해 최적화 된 블록을 갖습니다. 개발 소프트웨어의 신시사이저는 게이트 사이의 연결 다이어그램을 만듭니다. 이것은 영구적으로 FPGA에 저장되지 않지만 외부 구성 플래시 메모리에서 전원을 켤 때로드되어야합니다. 디자인이 저장되는 곳입니다. 다른 플래시 메모리와 마찬가지로 여러 번 지우고 다시 쓸 수 있습니다.


Logisim을 사용했는데 회로도에는 환상적이지만 그림 (png, jpeg 등) 이외의 것을 출력하는 방법이 없습니다. 필자가 가지고있는 FPGA 혼란에서 부분적으로 광범위한 장치의 문제이지만 기본과 기본을 설명하는 리소스를 찾지 못했습니다. CPU를 거기에 놓으면 어떻게 외부 세계와 인터페이스합니까? 어떤 장비가 필요합니까? FPGA를 반복적으로 다시 프로그래밍 할 수 있습니까? 등등. 등등. 주제에 대한 친숙 함이 전혀 없습니다. 초보자 가이드가 필요하다고 생각하지만 어디서나 찾을 수는 없습니다.
Rory O'Hare

2
1) FPGA는 I / O 핀을 통해 외부 세계와 인터페이스합니다. 차이점은 전용 칩과 달리 핀을 선택할 수 있다는 것입니다. 2) 스타터 키트, 개발 키트 또는 이와 유사한 것으로 시작할 수 있습니다. 여기에는 FPGA, 일부 I / O 커넥터 및 전원 공급 장치가 내장되어 있습니다. 대부분은 프로그래머도 포함합니다. 하나를 얻는 것을 잊지 않는 경우. 3) 예, FPGA를 다시 프로그래밍 할 수 있습니다. 이 프로그램은 본질적으로 거대한 시프트 레지스터 인 칩에 저장됩니다. 시작시 전용 상태 머신 또는 외부 소스가이를 칩에로드합니다.
Mike DeSimone

9

자일링스 툴에는 익숙하지 않지만 Altera 툴에 익숙하므로 툴라에 대해 알려 드리겠습니다. 자일링스와 다른 사람들은 그렇게 다르지 않아야한다.

Verilog

가장 먼저해야 할 일은 Verilog를 배우는 것 입니다. Verilog (및 다소 유사한 VHDL)가 처음으로 시뮬레이션 언어로 설계 되었기 때문에 많은 구조 (예 : #5"5 단계 대기", 일반적으로 나노초)를 의미합니다. 따라서 Verilog 코드를 합성 할 수 있도록 ( 즉, FPGA의 비트 스트림으로 컴파일 할 수 있도록) 명심해야 할 많은 제한 사항이 있습니다 .

그러나 가장 큰 충격은 Verilog (및 VHDL)로 작성하는 것이 시스템에서 예상되는 동작 이며 컴파일러가 설명에서 적절한 논리를 유추 한다는 것입니다. 조심하지 않으면 이것으로부터 많은 버그를 얻을 수 있습니다.

예를 들어 D 플립 플롭은 다음과 같습니다.

always @(posedge RESET or posedge CLK)
begin
    if(RESET)
        Q <= 1'b0;
    else if(CLK_ENA)
        Q <= D;
end

이것은 DFF의 작동 방식을 설명하며, 컴파일러는 DFF를 분석하고 DFF를 원하는지 파악해야합니다. 는 @(...)착신되는 감도에서 코드 블록의 재평가를 트리거 신호의리스트이다; 따라서이 블록 Q에서 RESET또는 상승 에지가있는 경우에만 변경됩니다 CLK(액티브 하이 리셋의 경우). 당신은 (어떤없이 모든 오른쪽 측 변수를 포함해야 감도 목록에 뭔가 잊어 버린 경우 posedge또는 negedge조합 논리 블록에 대한 수정을) 호출 오류보다는 필요에 따라 컴파일러는 래치를 합성한다. Verilog는 원래 구현 세부 사항을 숨기고 (필요하지 않은) 시뮬레이션 언어 였기 때문에 미친 짓입니다. VHDL은 동일하지만 훨씬 더 장황합니다.

마지막으로 몇 년 전에 SystemVerilog 라는 Verilog의 새 버전 이 출시되어 합성 가능한 코드 작성이 훨씬 쉬워 졌습니다. Xilinx ISE와 Altera Quartus II가 모두 지원하므로 가능하면이 언어를 배우십시오. 주요 문제는 좋은 참고 자료가 전혀 없다는 것입니다.

DFF의 SystemVerilog 버전은 몇 가지 작은 것을 정리합니다.

always_ff @(posedge RESET, posedge CLK)
begin
    if(RESET)
        Q <= '0;
    else if(CLK_ENA)
        Q <= D;
end

감도 목록의 신호는 쉼표로 구분됩니다. 거기서 일할 수 없었기 때문에 or혼란 스러웠 기 때문 and입니다. 또한 1'b0(단일 0비트)를 '0( 하나의 비트 에 확장되는 심볼 0이 할당되는 것에 따라 필요합니다. 매개 변수화 된 모듈에서는 훨씬 더 유연합니다)로 대체하십시오 . 마지막으로, 콘텐츠를 플립 플롭으로 합성해야하는 대체 always로직 (래치, 래치 및 플립 플롭에 사용될 수 있음 )을 주목하십시오 always_ff. always_comb입력에서 블록까지의 감도를 계산하기 때문에 감도 목록을 제거하는 것도 있습니다 .

Altera의 설계 소프트웨어는 Quartus II라고하며 Web Edition을 찾고 있습니다 . (Subscription 에디션은 다소 비싸며 가장 빠르거나 가장 최근의 FPGA 모델에만 필요합니다.)

슬픈 부분은 그 주제에 관한 좋은 책을 찾지 못했다는 것입니다. 내가 배운 것은 합성 가능한 것과 그렇지 않은 것, 예제 코드를 잘 설명하지 못하는 Verilog 서적과 같은 여러 출처에서 여러 가지 것들을 하나로 묶어 얻은 것입니다. Quartus II에는 D 플립 플롭에서 상태 머신에 이르기까지 몇 가지 일반적인 구조에 대한 템플릿 코드를 삽입하는 "템플릿 삽입"명령이 있습니다.

데모 하드웨어

Verilog에서 프로세서를 구현 한 후에는 프로세서를 빌드해야합니다. 당분간 Quartus가 칩을 선택하게하십시오 (패밀리를 선택해야합니다. Cyclone IV를 추천합니다)와 핀아웃. 일단 울리면 필요한 칩의 양을 알 수 있습니다. 얼마나 많은 로직 요소, 플립 플롭, RAM 비트 등을 사용했는지 알려줍니다. 그 중 50 %를 넘지 않아야합니다. 만약 그렇다면, 컴파일러가 선택한 칩을보고 최소한 핀이 많은 다음으로 큰 (논리 요소로) 칩을 수동으로 선택하고 50 % 미만으로 활용 될 때까지 반복하십시오.

그런 다음 최소한 마지막으로 만든 칩만큼 큰 칩이있는 데모 보드를 구입하십시오. 주변 장치 및 / 또는 I / O 커넥터가 필요한지 확인하십시오. 빠진 하드웨어를 제공하기 위해 확장 커넥터에 꽂는 도터 카드를 만드는 것은 드문 일이 아닙니다.

하드웨어를 선택 했으므로 실제 핀아웃을 파악하고 핀 플래너를 사용하여 올바른 신호를 올바른 핀에 배치하십시오. 데모 보드에는 데모 보드의 어떤 장치 또는 커넥터 핀에 어떤 핀이 연결되어 있는지 알려주는 사용 설명서가 있습니다.

핀 배치가 설정되면 원하는 핀을 사용하도록 다시 빌드하십시오. 시스템 클럭과 같은 일부 신호에는 전용 입력 핀이 필요하므로 내부 PLL로 바로 라우팅됩니다.

프로그래머를 사용하여 디자인을 FPGA로 직접 다운로드하십시오 (이전에 언급 한 시프트 레지스터). 이제 익숙한 edit-compile-run 디버깅주기에 있습니다. 작동 할 때까지 치십시오.

작동하면 프로그래머가 코드를 온보드 구성 장치 에 다운로드 하여 프로그램 전원을 켜고 실행할 수 있습니다.

꽤 길어서 도움이 되었기를 바랍니다. 배울 것이 많다 . 절차 적 언어에서 기능적 언어로 이동하는 것과 같이 새로운 프로그래밍 패러다임을 배우는 것만큼이나 새로운 프로그래밍 언어를 배우는 것과는 다릅니다. Verilog는 동시 언어입니다. 대부분의 코드는 항상 실행됩니다.

행운을 빕니다!


큰 도움이되었습니다. 한 가지만 확인하기 위해 회로도 캡처에 대해 들었습니다. 이것이 Verilog를 배우는 데 적합한 대안입니까? 필요한 경우 배울 것이지만 100 % 필요하지 않은 경우 이미 알아 내야 할 막대한 목록에 추가하지 않고 싶습니다. 고맙습니다.
Rory O'Hare

사실은 아닙니다. 큰 문제 중 하나는 회로도 캡처 프로그램에 달려 있다는 것입니다. 회로도를 가져와 잘못된 Verilog를 생성하는 경우 어떻게해야합니까? Verilog를 작성하면 모든 버그를 수정하는 데 필요한 권한이 부여됩니다. 그러나 가장 큰 이유는 Verilog뿐만 아니라 회로도 캡처가 수행하지 않는 작업이 있기 때문입니다. 매개 변수화 된 모듈과 버스 분할 및 병합은 즉시 떠오르는 모듈입니다.
Mike DeSimone

1
좀 더 "하드웨어 설명"언어를 Verilog 또는 VHDL로 바꿀 수있는 도구가 있습니까 (예 : net Z가 데이터 입력이 A, B 및 C의 조합 인 플립 플롭이되도록하려면 비동기식으로 재설정 됨) C와 D는 사실 Z:= A & (B # C); Z.ar = C & D;입니다. 민감도 목록에 대해 걱정할 필요없이 같은 것을 말할 수 있다면 좋을 것입니다 ).
supercat

Altera Quartus를 사용하면 설계도를 회로도 또는 AHDL (Altera의 VHDL 버전) 또는 다른 HDL을 포함한 조합으로 입력 할 수 있습니다. (구식 인, 나는 주로 작은 AHDL 내 CPLD와 FPGA 프로젝트에 대한 개략적 인 항목을 사용했다.)
피터 베넷에게

분명히 AHDL은 VHDL의 버전 이 아닙니다 . VHDL과 Verilog는 모두 추론 언어로, 코드에서 원하는 회로의 동작을 설명하고 컴파일러는 해당 동작 설명에서 구현을 유추해야합니다. 이것은 시뮬레이션 언어로 시작하여 합성에 재사용되었다는 사실의 유산입니다. AHDL은 선언적 언어로, 프리미티브 (예 : 플립 플롭, 진리표)를 선언하고 연결 방식을 지정하므로 컴파일러가 추측 할 필요가 없습니다. AHDL은 80 년대로 거슬러 올라가며 ABEL에 훨씬 가깝습니다.
Mike DeSimone

5

예, FPGA는 거의 확실하게 솔루션입니다!

당신은 거의 확실 합니다 하드웨어 기술 언어 중 하나를 사용해야하거나 다른 도구로 설계도를 재 입력합니다. 다음과 같이 회로도 접근 방식을 권장하지 않습니다.

  1. FPGA 툴 벤더가 실제로 지원하지 않는 경우
  2. 휴대 할 수 없습니다

HDL을 작성한 후에는 다양한 "IP 마법사"를 사용하여 공급 업체 라이브러리에서 직접 삽입하지 않거나 라이브러리의 구성 요소에 직접 붙여 넣지 않는 한 다른 칩으로 공정하게 이식 할 수있는 코드를 갖게됩니다 쉽게 포함 (예 : 임베디드 C IME 포팅)

또한 파형을 쳐다 보는 것만으로도 기능을 "인식"하고 결과를 확인할 수있는 테스트를 작성할 수 있으므로 테스트 및 검증 환경이 훨씬 향상됩니다.

큰 2 개의 HDL은 VHDL과 Verilog입니다. 어떻게 다른지에 대한이 답변을 읽고 싶을 수도 있습니다 ...

VHDL 또는 Verilog?

또한 Python을 이미 알고 있다면 MyHDL도 살펴볼 가치가 있습니다. 거대한 검증 기능을 제공하지만 여전히 "일반적인"HDL이 제공하는 저수준 제어의 대부분입니다.

HDL을 선택한 다음 시뮬레이션에서 작동 (다시, 미안합니다!)을 얻으면 공급 업체 도구를 통해 푸시하고 다음 번 큰 작업 덩어리를 시뮬레이션 할 수있는 상태가됩니다. 올바르게, 당신이 생각하는 것보다 항상 더 많은 노력이 있습니다 :)

회로도에 매료되어 라이센스를 보유 할 수있는 경우 LabviewFPGA가 적합 할 수 있습니다.


3

Hamblen et al의 Digital Systems의 Rapid Prototyping 사본을 얻으십시오 :

http://users.ece.gatech.edu/~hamblen/book/bookte.htm

주로 Verilog보다 선호하는 VHDL을 사용합니다.

여기에는 매우 간단한 8 비트 CPU 인 uP3이 포함되어 있는데,이 책은 몇 년 전에이 책의 이전 버전을 사용하여 자체 Altera FLEX 10K 하드웨어에서 구현했습니다. "전면 패널"PCB를 만들 때이 $ 25 Cyclone II 보드로 포팅하겠습니다 . MIPS 및 Altera NIOS II 프로세서도 포함되어 있습니다. 무료 Altera Quartus II 도구를 사용하여 책에서 uP3 연습을 수행하고 VHDL로 CPU 코드를 다시 작성하여 Cyclone II 보드에서 작동시킬 수 있습니다. 또는 Quartus II에는 회로도 항목이 있으므로 회로도를 직접 입력하고 시뮬레이션 한 후 Cyclone II에서 실행할 수 있어야합니다.


1

난이도가 도구 기술에 가파른 학습 곡선이라면 가장 쉬운 길을 따라 가십시오. Actel (현재 Microsemi)에는 판독이 전혀 필요없고 사용하기 쉬운 FPGA 도구 패키지 인 Libero 가 있습니다. 설치 후 바로 사용할 수 있습니다. 실제로 직접 회로도를 생성 할 수 있으며 클릭 몇 번으로 물리적 FPGA에 업로드 한 후 몇 가지 클릭만으로 화면을 직접 설명 할 수 있습니다.


0

당신이 HDL을 배우기로 선택한다면, 당신이 영향을 줄 수있는 곳은 어느 것이 더 나은 언어입니까. 유럽에서는 VHDL이 더 유명합니다. 미국에서는 VHDL 인 방위 산업을 제외하고 Verilog가 더 유명합니다. (미국 국방부는 원래 VHDL을 만들었습니다.) 이는 주변 사람들이 한 언어 또는 다른 언어로 더 잘 도울 수 있음을 의미합니다. 그러나 온라인에서 도움을 찾고 있다면 관련이 없을 수 있습니다.

고려해야 할 다른 책 은 Altera DE1 및 DE2 보드 를 가리키는 Digital Systems : SOPC Edition의 Rapid Prototyping입니다 . DE1 및 DE2로 포팅 된 다양한 컴퓨터가 이미 있으며 작동 방식에 대한 아이디어를 제공합니다. Minimigtg68 (Amiga), FpgaGen (Sega Genesis) 등이이 보드로 포팅되어 예제를 볼 수 있습니다.

자일링스로 가면 지금 두 권의 책이 있습니다. Verilog의 FPGA 프로토 타이핑 예제 : Xilinx Spartan-3 버전 VHDL의 FPGA 프로토 타이핑 예제 : Xilinx Spartan-3 버전 권장되는 보드는 아직 모르겠습니다. 곧 출시 될 FPGA Arcade 에 대해 기대하고 있지만 Xilinx 또는 다른 제품이 있는지 잊어 버렸습니다.


0

이제 Logisim Evolution이라는 Logisim을 추가로 개발하는이 변형을 발견했습니다. 그들은 logisim에 내장 된 논리 회로의 회로도에서 VHDL로 내보내는 기능을 구현했습니다.

https://github.com/reds-heig/logisim-evolution 에서 찾을 수 있습니다.

이 질문이 오래되었다는 것을 알지만 그것은 나에게 도움이되었고 다른 사람에게 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.