문제

나는 항상 내 자신의 마이크로 프로세서를 만들고 싶었다 .. 나는 읽었다 내 자신의 마이크로 컨트롤러를 어떻게 만들 수 있습니까? .

나는 Verilog와 VHDL을 배우기 위해 여러 번 시도했습니다. 그러나 내 인생을 위해 나는 언어 스타일을 둘러싼 내 머리를 얻을 수 없습니다. 나는 C/C ++/C# 배경에서 왔으며 루비와 함께 기능적인 프로그래밍을 수행하는 (성공과 함께) 일부 (성공한) 덤벼 들었습니다.

누구나 HDL 언어를 처음부터 가르치기위한 책이나 온라인 리소스를 제안 할 수 있습니까 (내 절차 적 사고 방식을 잊을 수 있도록)

또한 HDL 프로그램을 시뮬레이션하는 방법에 대해 정확히 머리를 잡는 데 어려움을 겪고 있습니다. 하드웨어에 인쇄 나 물건과 같은 것은 없으므로 FPGA없이 프로그램을 테스트하는 가장 좋은 방법은 무엇입니까 (언젠가는 그 중 하나를 주문하겠습니다!). 그것을 시뮬레이션하는 것은 정확히 어떻게 작동합니까?

기본적으로 저는 HDL과 시뮬레이션을 중심으로 머리를 잡을 수 있도록 누군가가 필요합니다.

도움이 되었습니까?

해결책

HDL은 하드웨어를 모델링하기위한 것임을 기억하십시오. 하드웨어를 사용하면 모든 것이 한 번에 발생합니다. 하드웨어에 의해, 나는 입력과 다른 로직 게이트의 출력에 연결된 논리 게이트 모음을 의미합니다. 이것은 본질적으로 FPGA 또는 ASIC의 내용입니다 (FPGA에서는 해당 연결을 프로그래밍 할 수 있습니다). 로직 게이트 체인을 통해 입력을 흔들고 효과가 파열됩니다. 모든 로직 게이트를 입력을 지속적으로 평가하는 작은 프로세서로 생각하십시오.

따라서 HDL에서 가장 먼저 고려해야 할 것은 모든 과제가 동시에 발생한다는 것입니다. "정상적인"의미에서 발생하는 유일한 장소 (일반 프로그래밍 언어에서와 같이 다른 진술)는 프로세스 블록 (VHDL 또는 Verilog의 항상 블록) 내부에 있습니다. 그러나 모든 프로세스 블록 (또는 Verilog의 항상 블록)도 동시에 실행되고 있음을 알아야합니다.

HDL은 단지 하드웨어의 동시성을 모델링하려고합니다.

소프트웨어 개발자에게 HDL을 가르치려고하는 책까지는 ... 나는 아무것도 없다고 생각합니다. 대부분은 하드웨어 엔지니어를 대상으로합니다.

당신은 루비 프로그래밍을 한 것이라고 언급했습니다. Ruby로 작성된 HDL을 사용하고 싶다면 RHDL을 시도해 볼 수 있습니다. http://rhdl.rubyforge.org/ 기본 HDL 개념이 있으며 VHDL과 비슷해 보이지만 Ruby이므로 내장으로 조금 더 실험 할 수 있습니다. 모델을 작성한 다음 시뮬레이션 할 수 있습니다. 몇 가지 예가 포함되어 있습니다.

다른 팁

디버깅은 시뮬레이터 및 파형 뷰어로 수행됩니다. 시간이 지남에 따라 모든 내부가 수행하는 작업을 볼 수 있습니다. 또한 Modelim을 사용하면 프로세스 내부에서 소프트웨어와 같은 중단 점도 수행 할 수도 있습니다.

"보고서"문을 사용하여 VHDL로 물건을 인쇄 할 수 있지만, 매우 비 SW 방식으로 서식을 수행해야합니다.

report "The value is not " & integer'image(some_integer_variable);

다소 쉽게 인쇄하려면 사용하십시오 Textio 패키지.

또 다른 팁 - 많은 코드가 있습니다 use ieee.std_logic_arith.all; 그것에. 해당 라이브러리는 비표준 (IEEE 모니 커에도 불구하고)입니다. ieee.numeric_std.all 대신에.

간단한 시작 - 시계가 진드기에 매번 올라가는 카운터를 만듭니다 (사용 if rising_edge(clk) then 관용구). 카운터가 특정 값에 도달하면 신호를 전환하십시오.

테스트 벤치를 만들어 시뮬레이션하는데, 이는 기본적으로 CLK 신호를 '0', '1', '0', '1'으로 만드는 것을 의미합니다.

이해하기 쉬운 방법은 다음과 같습니다.

process:
begin
    clk <= '0';
    wait for 5 ns;
    clk <= '1'; 
    wait for 5 ns;
end process;

SIM을 실행하고 카운터가 올라가고 토글 신호 전환을보십시오. 카운터를 충분히 크게 만들면 FPGA를 만들고 해당 토글 신호를 LED 핀으로 배선하여 LED 플래시를 켜고 끄는 것을 볼 수 있습니다.

그것이 "Hello World"와 동등한 FPGA입니다!

Verilog 디버깅의 경우 $ display 또는 $ monitor와 같은 시스템 작업과 같은 Printf를 제공합니다. 물론 합성 가능하지는 않지만 모든 시뮬레이터는 이해해야합니다. 디버깅은 SW 디버깅, 신호 값을 인쇄하는 것과 같은 한편으로는 한편으로는, 이미 언급 된 $ Diplay 및 물건을 사용하여 콘솔에 다른 것을 인쇄하여 완료됩니다. 반면에 아픈 반점을 찾을 때까지 신호파 형태를 쳐다 보면서. 이러한 것들에 대해 FPGA가 필요하지 않음, 좋은 시뮬레이터 만 있으면됩니다. 그러나 일부 LED를 깜박일 수있는 FPGA를 갖는 것은 항상 좋습니다 :)

시뮬레이션을 위해서는 Modelim을 살펴 봐야합니다. Windows에 있다면 무료로 학생 에디션이 있습니다.
http://www.model.com/content/modelsim-pe-student-edition-hdl-simulation

또 다른 옵션은 XilInx 'ISE 웹 팩입니다. 여기에는 Linux에서도 작동하며 완전한 FPGA 흐름이 포함되어 있습니다.http://www.xilinx.com/tools/webpack.htm
그러나 시뮬레이션을 위해 Modelim을 추천합니다.

내가 가지고있는 몇 가지 출발점은 다음과 같습니다.
http://www.asic-world.com/
http://www.doulos.com/knowhow/verilog_designers_guide/

내 대답은 몇 년 늦었을 수도 있지만, 이것은 같은 쿼리를 가진 미래 시청자들을위한 것입니다.

나는 또한 C ++/C# 배경에서 나왔습니다. 내 대답은 Verilog HDL에 대한 우려와 VHDL이 아닙니다. 나는 현재 이번 학기 과정을 수강하고 있으며 여기에 Verilog를 더 잘 이해하는 데 도움이 된 책이 있습니다.

많은 책을 찾을 수 있습니다 여기 나열된대로 ASIC 세계 대지.

Skorgon이 대답했듯이 시뮬레이션에 Xilinx ISE를 사용할 수 있습니다. Verilog와 같은 C ++/C#이있는 Visual Studio에 가장 가깝습니다. 그러나 원시적 느낌 (IDE 없음)의 경우 Iverilog 또는 Icarus Verilog. 그것은 우리 과정에서 사용 된 것입니다. iverilog를 사용하여 Verilog 파일을 실행하는 방법은 다음과 같습니다.

텍스트 편집기에 코드를 입력하고 .vl Iverilog의 빈 폴더 내부. 명령 프롬프트에서 빈 폴더로 이동하십시오. 그런 다음 다음을 입력하십시오.

iverilog -o <name of exe file you want for your .vl file> <your .vl file>
vvp <name of exe file>

예시:

iverilog -o samp sample.vl
vvp samp

도움이 되었기를 바랍니다!

때로는 인스턴스 이름을 인쇄해야합니다. 이는 동일한 구성 요소의 많은 인스턴스가 설계에 사용되는 경우 유용합니다. "... Verilog (디스플레이 시스템 기능의%m)에서는 간단하지만 VHDL에서는 좀 더 많은 코드 쓰기가 필요합니다. $ display ("). DBG 인스턴스 이름 %m at %d ", $ time); SystemC에서 인스턴스 이름을 인쇄하는 방법 도이 사이트에서 사용할 수 있습니다.

이러한 디버그 정보의 중요성은 설계에 동일한 구성 요소의 많은 인스턴스가 포함 된 경우입니다.

첫 번째 텍스트 IO 라이브러리를 호출해야하고 라인 변수를 선언해야합니다. 세부 사항을 보려면 인쇄 예제를 참조하십시오.

다음으로 두 가지 옵션 중에서 선택해야합니다. 하나는 다음과 같습니다. Debug String의 인스턴스 이름과 다른 옵션은 항목 및 아키텍처 이름과 같은 자세한 정보를 제공합니다 ... "http://bknpk.ddns.net/my_web/miscellyangyhw/vhdl_path_name_print.html

C 프로그래밍이 강한 경우 다른 프로그래밍 언어를 매우 쉽게 배울 수 있습니다. 하드웨어 설명 언어는 크게 다르지 않습니다. 그러나 일반적으로 사용되는 하드웨어 구성 요소의 기본 사항을 알아야합니다. 예를 들어, a의 디자인 전체 가산기 전체 가산기의 입력 및 출력이 무엇인지 아는 경우 매우 간단합니다. 또한 입력과 출력의 관계를 알아야합니다. 그만큼 PDF 초보자에게 유용 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top