포스팅 이전에 먼저 해두는 말. 아무래도 책 페이지가 많기도 하고, 포스팅 하는 본인이 펼쳐진 페이지 보고 공부하는 느낌이 현재는 강한지라... 지금 당장이라도 여기서 다룰 내용은 아니지만 그렇다고 변명 아닌 변명을 해봅니다. -----------------------------------------------------------------------------------------------------------------------------------------------------------------[Gate Delay]전공 교재 p80 디지털 회로에서 쉽게 간과하는 것이 있는데, 실제 회로에서는 딜레이가 있다는 것이죠. 그렇기 때문에, 엔지니어가 직접 구현한 회로와 다소 차이가 발생할 수 있..
[Concurrency : 동시성] - Verilog HDL은 Description Language이기 때문에, 동시에 각각의 코드 블럭이 실행된다. 예로, module AND( inputA, B, outputC ); wire w; NANDU1(A, B, w); NANDU2(w, w, C); endmodule 여기서 동시에 수행되는 부분은 NAND U1과 NAND U2 부분이다. Continuous Assignments와 Procedural Blocks같은 것들이 동시적으로 수행된다. 즉, 순서가 바뀌어도 동시에 수행되기 때문에 결과는 같다. [Continuous Assignments] assign ~ ; 의 형태로 기술되는 것을 Continuous Assignments라고 한다. Combinationa..
기본적으로 C에서 사용하는 연산자를 따라가는 편이다. 그렇다해도 나는 Verilog 사용자가 C를 보면서 공부하는건 아닌거 같아서 따로 정리하고자 한다. [Relational Operations : 비교 연산자] 메인으로 사용되는 표현식 A > B A가 B보다 큰가? >= A >= B A가 B보다 크거나 같은가?
[Module Structure] module example_code #(parameter D=10)( inputwire[3:0]i, outputwire[3:0]o ); wiretmp; wirerst; ANDA1(i, tmp); assign o = ~i; always @(*) begin if(rst) tmp = 1'b0; end endmodule ※ 임의로 만든 모듈이기 때문에 제대로 작동하는지 아닌지는 판별 불가. 단순히 이렇게 모듈을 작성한다라는 것을 인지하면 되겠습니다. 한 가지 주의할 점은 assign 혹은 always와 같은 것을 사용하여 식을 정의할 때, 사용하는 변수가 그 이전에 선언이 되어야합니다. 즉, 위 모듈에서 선언 파트는 wire tmp; ~ wire rst;인데, 이 부분이 선언이..
- Bunch of Variables or Nets를 말하며, 선 다발(Bus)을 의미한다. 기본적인 선언 [Left Range : Right Range] reg [0:7] A, B; // Two 8 bit reg with MSB as the 0th bit wire [3:0] Data; // 4 bit wire with MSB as the 4th bit modulecter( inputwirerst, inputwireclk, inputwirejmp, inputwire[3:0]jump, outputrg[3:0]count // 3-bit counter module ); always @(posedge clk) // sync logic begin if(rst)count = 0; // reset signal is ..
학부 때 했던 프로젝트와 코딩을 이번에 포트폴리오 다시 작성하며 정리한건데 참... 워드로 작성은 다 한 상태인데 이걸 블로그에 올리려니 또 문제가 되네요. 아무래도 코딩을 직접적으로 쓰게 된다면 추후 누군가 대학에서 프로젝트를 할 때 베끼게 될 수가 있으니... 최대한 코딩은 안 쓰는 방식으로 정제를 한 번 해야할 듯 합니다.