할당문

2020. 10. 25. 23:31·study/Logic Circuit
반응형

연속할당문 

: net형 객체에 값을 할당

  • assign문
continous_assign :: = assign [driving_strength][delay] net_assignments;

 

절차형 할당문 

: variable형 객체에 값을 할당

  • always 블록, initial 블록, task, function 내부의 할당문
  • blocking 할당문 : 할당기호 = 을 사용
  • nonblocking 할당문 : 할당기호 <=을 사용

 

절차형 연속 할당문

  • assign - deassign문 , force - realease 문

 


 

연속 할당문

  • assign문을 이용하여 net형 객체에 값을 할당
  • 우변의 값에 변화가 발생했을 때 좌변의 객체에 값의 할당이 일어남
  • 단순한 논리 표현을 이용한 조합 논리회로 모델링에 이용

 

함축적(implict) 연속 할당문

: net 선언문에  연속 할당문 포함시킨 경우

wire mynet = enable & data;                선언함과 동시에 할당  :  (함축적 연속 할당)
wire mynet;                                      선언후에 할당 : (연속 할당)
assign mynet = enable & data;  
assign na = ~(in1 & in2);               // 2 input NAND
assign out = (sel==1) ? d1 : d0;      // 2-to-1 MUX

assign carry = (cnt10==4’h9);
assign sum = a + b;                     // 덧셈 회로

 

연속 할당문을 이용한 4비트 가산기

module adder (sum_out, carry_out, carry_in, ina, inb);
    output [3:0] sum_out;
    output        carry out;
    input   [3:0]  ina, inb;
    input          carry_in;
    assign {carry_out, sum_out} = ina + inb + carry_in;
endmodule 

 

연속 할당문을 이용한 16비트 출력 버스

module select_bus (busout, bus0, bus1, bus2, bus3, enable, s);
    parameter n = 16;
    parameter Zee = 16'bz;
    output [1:n] busout;
    input   [1:n] bus0, bus1, bus2, bus3;
    input          enable;
    input   [1:2]  s;                                    // 2bit니까 0123 표현가능
    tri       [1:n]  data;                               // net declaration

// 연속 할당을 갖는 net 선언(함축적 연속 할당문)
    tri      [1:n]   busout = enable ? data : Zee;     //enable이 1이면 

// 4개의 assign 문을 이용한 표현
    assign data =(s == 0) ? bus0 : Zee;      // s가 0이면 data에 bus0 할당, 아니면 Zee 할당
    assign data =(s == 1) ? bus1 : Zee;
    assign data =(s == 2) ? bus2 : Zee;
    assign data =(s == 3) ? bus3 : Zee;

/* 하나의 assign 문으로 4개의 연속 할당을 표현(위의 4개의 assign 문과 등가임)
    assign data =(s == 0) ? bus0 : Zee,
             data =(s == 1) ? bus1 : Zee,
             data =(s == 2) ? bus2 : Zee,
             data =(s == 3) ? bus3 : Zee; */

endmodule

 


 

할당 지연과 net 지연

- 연속 할당문의 지연값 지정

  • assign 뒤에 지연 연산자(#)를 사용하여 지정
  • 우변 피연산자 값의 변화에서부터 그 값이 좌변에 할당되기까지의 시간 간격을 지정
assign #10 wrieA = a & b;
wire    #10 wireA = a & b;       // 함축적 연속 할당문의 지연

 

- net 지연

: net 선언문에서 지연 값을 지정

  • 지정된 net 지연이 경과한 후에 할당이 이루어 짐
  • 해당 net를 구동하는 모든 구동자 ( 게이트 프리미티브, 연속 할당문 )
wire #10 wireA;

 

- 관성지연( inertial delay )

  • Verilog HDL의 default 지연
  • 지정된 지연 값보다 입력 신호의 변화 폭이 작은 경우, 입력 신호의 변화가 출력에 영향을 미치지 않음
  • 관성 지연은 게이트 수준 모델링에도 동일하게 적용

관성지연의 적용과정

① 우변 수식의 값이 평가된다.

② 평가된 우 의변 값이 좌 에변 할당 예정된 값과 다르면, 현재 예정된 할당 event가 취소된다.

③ 새로운 우변의 값이 좌변의 현재 값과 동일하면 할당을 위한 event가 예정되지 않는다.

④ 새로운 우변의 값이 좌변의 현재 값과 다르면, 지연이 계산되고 주어진 지연 후에 새로운 할당 event가 일어나도록 예정된다.

 

연속 할당문에서의 관성지연

module inertial_delay(); 
    reg a, b; 
    assign #30 wireA = a & b;  
    initial begin                         // always 구문은 값이 변경될때마다 실행이고 initial은 딱 한번 주르륵 실행
              a = 1'b0;  b = 1'b0; 
        #50 a = 1'b1;  b = 1'b1; 
        #50 a = 1'b0;  b = 1'b0; 
        #50 a = 1'b1;  b = 1'b1; 
        #20 b = 1'b0; 
        #50;    end 
endmodule

 


절차형 할당문

절차형 할당문

  •  
  •  
  •  
  •  

 

  •  
  •  
reg[3:0] areg = 4'h4;            함축적
reg[3:0] areg;
initial areg = 4'h4;
반응형

'study > Logic Circuit' 카테고리의 다른 글

행위수준 모델링  (0) 2020.10.26
게이트 수준 Modeling  (0) 2020.10.10
Verilog 연산자  (0) 2020.10.10
Verilog 자료형  (0) 2020.10.08
Verilog HDL 개요 , 회로설계 모델링, 어휘 규칙  (0) 2020.10.07
'study/Logic Circuit' 카테고리의 다른 글
  • 행위수준 모델링
  • 게이트 수준 Modeling
  • Verilog 연산자
  • Verilog 자료형
jjikky
jjikky
  • jjikky
    jikky.env
    jjikky
  • 전체
    오늘
    어제
    • 분류 전체보기
      • React
      • Node.js
        • TDD
        • Node.js
        • mern
        • OAuth
        • js_facebook login
      • Coding Test
        • 백준 알고리즘
        • CodeUp
        • 코테 이론
      • Js
        • Javascript
      • study
        • python
        • android
        • Big data analysis
        • Logic Circuit
      • git
      • 개발일지
      • 게임기획
      • Docker
      • IPFS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    ifps 네트워크 지연
    파이썬 완전탐색
    파이썬 그리디
    nft
    파이썬 딕셔너리
    빅데이터
    Ipfs
    NFT Marketplace
    verilog할당문
    verilog
    Python
    UI
    범주형 자료
    NFT IPFS
    그리디 알고리즘
    git 유용한 명령어
    파이썬
    ipfs add
    안드로이드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
jjikky
할당문
상단으로

티스토리툴바