2-2/디지털 설계 및 실험 (10) 썸네일형 리스트형 [디지털 설계 및 실험] Verilog vol10. Timing and Delays Delay는 여러가지 종류가 있다. 💻 Distributed Delay 먼저, Distributed Delay는 element마다 딜레이를 주는 방식이다. 여기서 element는 gate를 의미한다. Delay값들은 회로의 element 각각에 할당되어지며, input이 달라지면, 결과값은 delay후 변화하게 된다. 세세하게 딜레이를 줄 수 있지만, 속도가 느리다는 단점이 존재한다. 💻 Lumped Delay Lumped Delay는 모듈마다 딜레이를 주는 방식이다. 앞서, Distributed Delay는 element마다 딜레이를 주었지만, 이것은 마지막 최종출력단 앞에 있는 gate에 누적되는 딜레이를 뭉탱이로 준다. 그림을 보면 바로 감이 올것이다. 속도가 빠르다는 장점이 존재한다. 💻 Pin-.. [디지털 설계 및 실험] Verilog 기본 vol9. Useful Modeling Techniques 💻 assign and deassign procedural continuous assignment는 net에 값을 할당하는 구문을 말한다. wire assign a=b+c; 이런구문이 예시이다. 레지스터 값을 잠시 오버라이드 해서 쓰고 싶다면 assign을 사용하면 된다. 그리고, deassign을 쓰면 원래값으로 다시 되돌아온다. 이것은 reg타입에만 쓸 수 있다. 💻 force and release 위의 말했던 assign and deassign과 비슷한 효과를 낸다. 하지만 reg와 net 타입 둘다 오버라이드 하는데 사용될 수 있으므로 좀 더 많이쓰이고, stimulus에서 특히 사용이 많이 되어진다. 디자인 블록 안에 이것들을 사용하는 것은 추천되어지는 방법은 아니다. 예시를 보자. force를.. [디지털 설계 및 실험] 8. tasks and functions 지금까지 배운것으로만 해도 Verilog 다 할 수 있다.(수정/내가 behavioral modeling 포스팅을 안했었구나..) 지금부터는 추가적인 기능들에 대해서 포스팅 하겠다. 💻 Function vs Task 둘다 C언어에서 함수와 비슷한 기능을 수행한다. 둘다 모듈안에 정의되어야 하고 해당 모듈 안에서만 쓰인다는 공통점이 있다. 차이점을 봐보자. Function Function은 다른 Function은 이용할수 있지만, task를 이용할 수는 없다. 0의 시뮬레이션 시간에 실행된다. 어떠한 delay, event, timing control statement도 포함해서는 안된다. 적어도 하나의 입력인자가 있어야한다. 항상 하나의 리턴값만을 반환한다. output이나 inout 인자를 가질수 없다.. [디지털 설계 및 실험] Verilog 기본 vol 6. dataflow modeling 이번 포스팅에서는 Verilog의 설계 단계중 하나인 dataflow modeling을 알아보자. 💻 Continuous Assignments dataflow modeling에서 할당을 하는방법은 2가지가 있는데, 그중 하나인 연속 할당이다. 쉽게 말하면 net형 객체에 값을 할당하는 구문이다. assign out = i1 & i2; //out is a net. i1 and i2 are nets. //addr is a 16-bit vector net, add1 and add2 are 16-bit vector registers assign addr[15:0] = addr1_bits[15:0] ^ add2_bits[15:0]; continuous assignment 연속 할당문은 assign 문을 통해 ne.. [디지털 설계 및 실험] Verilog 외전 이번 포스팅에서는 내가 사용해보다 보니 헷갈리는 Verilog에서 숫자 표현 방식을 적어보겠다. HDL이다 보니 10진수 이외의 2,8,16을 상당수 사용하는 부분이 보였다. 💻 Number Specification in Verilog 사이즈를 표시한 수 : ' ('d/'D, 'h/'H ,'b/B', 'o/'O) 4'b1111 //This is a 4-bit binary number 12'habc // This is a 12-bit hexadecimal number 16'd255 // This is a 16-bit decimal number. 사이즈 미표기 수 : 칸이 없고 10진수를 표현한다면 도 생략이 가능하다. 23456 // This is a 32-bit decimal number by defau.. [디지털 설계 및 실험] Verilog 기본 vol.5 Gate-Level Modeling 오랜만에 올리는 Verilog! 베릴로그 조 아 먼저 Gate-level Modeling에 대해서 알아보자. 💻 Gate level Modeling 게이트 레벨 모델링이란 앞서 다뤘던 추상화의 4단계중 거의 가장 낮은 단계이다. 제일 낮은 스위치 수준 추상화가 거의 사용되지 않기때문이다. Multiplexer와 Full Adder와 같이 설계에서 가장 낮은 수준의 모듈을 구현하는 데 사용된다. 베릴로그에는 모든 기본 게이트가 내장되어있다. 그 기본 게이트들에는 무엇이 있는지 확인해보자. 💻 AND/OR Gates 베릴로그는 기본 게이트들은 내부적으로 구현을 해놓은 상태이다. AND/OR도 그에 포함된다. 모듈처럼 인스턴스화되며, 모듈 정의가 필요하지 않는다. 복수의 스칼라 input들이 들어가면 하나의 .. [디지털 설계 및 실험] Verilog 기본 vol4.-모듈과 포트 지난 포스팅에서는 System Tasks에 대해서 알아보았다. 이번 포스팅에서는 베릴로그의 기본 설계 단위인 모듈에 대해서 알아보자. 💻 Module이란? 앞서 다뤘지만, 모듈에 대해서 한번 더 알아보자. 모듈이란 Verilog에서 구체적 부분을 구성하고 있는 기본 설계단위이다. 머리부에는 모듈이름, port 목록들을 적어둔다. 선언부에서는 필요한 것들을 선언한다. port, reg, wire, parameter 들을 선언하며, 이 부분은 C언어의 변수선언하는 것과 똑같다. 몸체부에서는 기능들을 구현한다. 마지막에 endmodule을 꼭 붙여서 마무리 해줘야한다. 밑 SR Latch에 대한 예제를 보자. 위는 SR Latch를 베릴로그로 표현한 코드이다. 먼저, SR_Latch 모듈을 보자. 여기서 처음.. [디지털 설계 및 실험] Verilog 기본 vol.3 - System Tasks 저번 포스팅에서는 데이타 타입들에 대해서 알아보았다. 이번 포스팅에서는 System Tasks들에 대해서 알아보겠다. 💻 $display 사용법 : $display(p1,p2,p3,...,pn); 우리가 익히 알고 있는 printf와 유사하다. %d : 10진수 %b : 2진수 %s : 문자열 %h : 16진수 %c : ASCII문자 %m : 계층 이름(인자가 필요하지 않다.) %v : 강도 %o : 8진수 %t : 현재 시간 %e : 실수를 과학적 표기법으로(ex. 3e10) %f : 실수를 십진 표기법으로(ex. 2.13) %g : 실수를 위 둘중 짧은 것으로 출력 예시) $display("Hello Verilog World"): // Hello Verilog World reg [4:0] port i.. 이전 1 2 다음 목록 더보기