verilog task 예제

코드에서 작업을 호출하는 방법에 따라 다릅니다. 요구 사항에 따라 모델링할 수 있습니다. 당신은 동시에 또는 다른 클럭 사이클에서 또는 특정 기간 등 후 호출 할 모델을 할 수 있습니다. 아래 예제에서는 함수를 사용하여 패리티를 계산하는 방법을 보여 주며 있습니다. 간단한 코드이지만 항상 디자인에 사용됩니다. 작업은 코드를 작은 부분으로 분할하는 수단을 제공합니다. 종종 작업은 자주 사용되는 기능으로 구성됩니다. 작업에는 시간 제어 문이 포함될 수 있습니다. 작업은 이름으로 값을 반환하지 않습니다. Verilog HDL 기능은 함수가 두 개 이상의 출력을 구동 할 수 없습니다, 지연을 포함 할 수 없습니다처럼, 아주 작은 차이와 작업과 동일합니다. 이것은 매개 변수, 입력 인수, 인아웃 인수, 출력 인수, 레지스터 및 작업 내의 이벤트를 사용하는 예입니다. `a` 인수는 입력으로 선언되고 정수 데이터 유형으로 선언됩니다.

예제 1의 작업이 mytask.v라는 파일에 저장된다고 가정해 보겠습니다. 별도의 파일에서 작업을 코딩하는 장점은 여러 모듈에서 사용할 수 있다는 것입니다. 모듈 테스트 (clk); 출력 reg clk = 1`b0; task_check tt(clk); 항상 #5 clk = ~ clk; 작업 및 함수의 정의는 모듈에 있어야 합니다. 작업과 함수의 강조 차이는 작업만 이 이벤트, 지연 또는 타이밍 제어 문을 처리할 수 있고 함수는 시뮬레이션 시간이 0으로 실행된다는 점입니다. 몇 가지 차이점이 있습니다. 작업에는 사례 문(if 문)과 같은 동작 문이 0개 이상 포함될 수 있습니다. 여러 문을 괄호로 묶는 데 시작 끝 블록이 필요합니다. 안녕하세요, 읽기 및 쓰기 작업을 사용 하 여 verilog에 메모리를 작성 하 고 있습니다. 이 오류가 발생했습니다 : 계층적 이름 구성 요소 조회가 `WRITE`에서 실패했습니다. 나는 그것이 오는 이유를 이해하지 못한다. 당신은 말해 주시기 바랍니다 수 있습니다.. 아래 Modelim 시뮬레이션 스크린샷은 작업 의 결과 보여줍니다.

작업은 디지털 디자이너가 코드를 더 재사용 가능하고 읽기 쉽게 작성할 수 있도록 하는 Verilog 코드 섹션입니다. 작업에는 타이밍 지연이 포함될 수 있으므로 테스트벤치 시뮬레이션에 매우 유용합니다. 이것은 작업과 기능 사이의 주요 차이점 중 하나이며, 함수는 시간 지연을 허용하지 않습니다. 작업 및 함수는 코드 반복을 줄이는 데 사용됩니다. 프로젝트에서 여러 번 작업을 수행해야 하는 경우 코드 작성을 줄이는 작업이나 함수를 사용하는 것이 좋으며 더 읽기 쉽습니다. Verilog HDL 기본 사항 – 알테라, 아식 월드 (http://www.asic-world.com/) 정수 x; 레지 a, b, y; reg [3:0] z; reg [7:0] w; first_task(x, z, y); first_task(x, w[7:4], w[1]); first_task(1, {a, b, w[3], x[0]}, y); 시작 $display ($time,”%h %h %h %h %b”, dt, fp, bp, pw, 아웃); 표시 시간 주기 반복(dt)은 @(posedge clk);sync=1`b1;$display($time,”Am에서 디스플레이 시간 주기 =%b”, 동기화됨)을 시작합니다. 끝 반복 (fp) 시작 @(포즈 ge clk);sync=1`b1;$display ($time,”전면 현관 사이클에 오전 =%b”, 동기화); 끝 반복 (pw) 시작 @(포즈 ge clk);sync=1`b0;$display ($time,”다시 현관 사이클에 오전 =%b”, 동기화); 끝 반복 (bp) 시작 @(포즈 ge clk);동기화 = 1`b1;$display ($time,”맥박 폭 주기에서 Am =%b”, 동기화); end end/task endtask endtask A 함수는 입력에 대한 일부 처리를 수행하고 단일 값을 반환하는 반면, 작업은 보다 일반적이며 여러 결과 값을 계산하고 출력 및 인아웃 형식 인수를 사용하여 반환할 수 있습니다.