삽질매니아

위치로그 태그 방명록

'Verilog HDL'에 해당되는 글 4건

  1. 2007/05/25 D-Flip Flop(플립플롭)을 Verilog로 구현한 코드
  2. 2007/05/13 4bit Adder and Subtractor(4비트 덧셈뺄셈기) Verilog HDL 코드
  3. 2007/05/09 Verilog HDL을 이용해서 4bit Full Adder(덧셈기)를 구현한 코드
  4. 2007/05/02 Excess-3 변환기(컨버터) Verilog(베릴로그) 소스

D-Flip Flop(플립플롭)을 Verilog로 구현한 코드

전공공부 2007/05/25 05:04
Flip Flop(플립플롭)과 Latch(래치)는 1 또는 0을 저장 하는 소자이다.

Latch는 값이 변화하는 즉시 즉시 작동되는 소자이고, FlipFlop은 클럭에 의해서만 작동되는 소자이다.

D-Flip Flop을 Verilog HDL Behavior모델로 작성한 코드는 아래와 같다.

module DPETflipflop (D,CLK,PR,CLR,Q,iQ);
   output Q,iQ;
   input D,CLK,CLR,PR;
   reg Q,iQ;
   always @ (posedge CLK or negedge CLR or negedge PR)
   if((~CLR)&(~PR))
      begin
         Q = 1'b1;
         iQ = 1'b1;
      end
    else if(CLR&(~PR))
      begin
         Q = 1'b1;
         iQ = 1'b0;
      end
    else if((~CLR)&PR)
      begin
         Q = 1'b0;
         iQ = 1'b1;
      end
    else if(CLK&PR&CLR)
     begin
         Q = D;
        iQ = ~Q;
     end
endmodule


D-Flip Flop 작동되는 기준은 아래의 Truth Table이다.

-------------------------------------------------------
                INPUT                               |       OUTPUT
   Preset       Clear      Clock       D      |       Q        Q'
-------------------------------------------------------
       0             1            X          X       |      1         0
       1             0            X          X       |      0         1
       0             0            X          X       |      1         1
-------------------------------------------------------
       1             1            ↑          0       |      0         1
       1             1            ↑          1       |      1         0
       1             1            0           X      |      No Change
-------------------------------------------------------

Preset 과 Clear가 1,1 일 경우에만 클럭에 의해 작동되고
Preset과 Celar가 1,1이 아닐경우에는 각각 표에 따라 값이 출력된다.

이것이 Asynchronous(비동기) Preset 과 Clear를 가진 D-Flip Flop이다.
myeva
2007/05/25 05:04 2007/05/25 05:04
top
TAG D-FlipFlop, Verilog HDL, 래치, 플립플롭


Trackback[트랙백] 0 : Comment[댓글] 0

Trackback Address :: http://skstar.net/blog/trackback/155

Write a comment


4bit Adder and Subtractor(4비트 덧셈뺄셈기) Verilog HDL 코드

전공공부 2007/05/13 17:54
module Four_bit_adder_subtractor(S,C4,A,B,M);
    input [3:0] A,B;
    input M;
    output [3:0] S;
    output C4;
    reg [3:0]S;
    reg C4;
    always @ (A or B or M)
    begin
      if(M)
        begin
          S = A - B;
   if( A < B)
      C4 = 1'b0;
   else
            C4 = 1'b1;
        end
      else
        begin
          S = A + B;
          if( A+B > 5'b01111 )
            C4 = 1'b1;
          else
            C4 = 1'b0;
        end
    end
endmodule

위 코드는 4비트의 뺄셈과 덧셈이 동시에 가능한 모듈을 Verilog HDL코드로 작성한것으로

Behavior Model(동작수준모델)로 작성한것.

A와 B가 피 연산자 이고 결과는 4비트 S에 저장된다.

모드인 M에 따라서 덧셈 또는 뺼셈이 수행되는데, M이 1이면 뺄셈, M이 0이면 덧셈을 수행한다.

Always구문 안을 보자면

A 또는 B 또는 M이 변화할때 Always안의 블럭을 항상 수행하는데

M이 1이면 S = A - B를수행한다.

이때 A가 B보다 작으면 음수 결과가 나므로 Carry Out은 0 A가 B보다 크면 양수이므로 Carry Out 은 1로 나온다.

M이 0이면 S = A + B를 수행하는데, A와 B의 합이 4bit 1111를 넘어가면 Carry Out은 1

A와 B의 합이 4bit 1111보다 같거나 작으면 Carry Out은 0이다.
myeva
2007/05/13 17:54 2007/05/13 17:54
top
TAG Adder, Subtractor, Verilog HDL


Trackback[트랙백] 0 : Comment[댓글] 0

Trackback Address :: http://skstar.net/blog/trackback/154

Write a comment


Verilog HDL을 이용해서 4bit Full Adder(덧셈기)를 구현한 코드

전공공부 2007/05/09 12:31

아래 코드는 4bit Full Adder(덧셈기)를 표현한것으로

C0는 외부에서 들어오는 Carry 이고, 4bit A와 4bit B를 더해서

결과를 S, 거기에서 생기는 Carry를 C4에 넣는 코드이다.

아래 코드는 Behavior Level 로 작성한 코드이다.

Gate Level로 표현된 자료는 인터넷에 찾으면 된다.

module bit_adder(S,C4,A,B,C0);
  input [3:0]A,B;
  input C0;
  output [3:0]S;
  output C4;

  reg [3:0]S;
  reg C4;

  always @ (A or B or C0)
  begin
      S = A + B + C0;
      if ( A+B+C0 > 5'b01111)
        C4 = 1'b1;
      else
        C4 = 1'b0;
  end
endmodule


코드를 설명 하자면, A , B 또는 C0가 변경이 되면 아래에 있는 begin-end블럭을 실행

하게 되는데, A와 B 그리고 C0를 결과 S에 저장하고

그 셋 결과가 4 bit 1111보다 큰 결과가 나오면 Carry Out인 C4를 1로 출력하고

그보다 작으면 Carry Out인 C4를 0으로 출력하게 된다.
myeva
2007/05/09 12:31 2007/05/09 12:31
top
TAG Full Adder, Verilog HDL


Trackback[트랙백] 0 : Comment[댓글] 0

Trackback Address :: http://skstar.net/blog/trackback/153

Write a comment


Excess-3 변환기(컨버터) Verilog(베릴로그) 소스

전공공부 2007/05/02 02:48
Excess-3 Code(Gray Code)란 0~9까지의 BCD코드를 3더한 순서로 나열한것으로

0011,0100,0110....,1100 으로 나오는 것이다.

다른말로는 BCD to Excess 3 Code Converter라고도 하는데 이것을

Verilog HDL을 이용해 3가지 방법 즉,
1. Gate Level Description(게이트 수준기술)
2. Dataflow Description(데이터플로우 수준기술)
3. Behavioral Description(동작 수준기술)
로 나타내면 다음과 같이 코딩할수 있다.

1. Gate Level Description

module BinaryToGray(A,B,C,D,w,x,y,z);
    input A,B,C,D;
    output w,x,y,z;
    wire w1,w2,w3,w4,w5,w6,w7;
    not g1(z,D);
    and g2(w1,D,C);
    or g3(w2,D,C);
    not g4(w3,B);
    not g5(w7,w2);
    or g6(y,w1,w7);
    and g7(w4,w7,B);
    and g8(w5,w2,w3);
    and g9(w6,w2,B);
    or g10(x,w4,w5);
    or g11(w,w6,A);
endmodule


2. Dataflow Description

module BinaryToGray(A,B,C,D,w,x,y,z);
    input A,B,C,D;
  output w,x,y,z;
     assign z = ~D,
            y = (D&C)|(~(C|D)),
            x = ((~(C|D))&B) | ((C|D)&(~B)),
            w = ((C|D)&B)|A;
endmodule


3. Behavioral Description

module BinaryToGray(A,B,C,D,w,x,y,z);
  input A,B,C,D;
  output w,x,y,z;
  reg [3:0] E;
  wire [3:0] state;
  parameter S0=4'b0000, S1=4'b0001, S2=4'b0010, S3=4'b0011, S4=4'b0100,
             S5=4'b0101, S6=4'b0110, S7=4'b0111, S8=8'b1000, S9=4'b1001;
  assign w=E[3], x=E[2], y=E[1], z=E[0];
  assign state[3] = A, state[2] = B, state[1] = C, state[0] = D;
  always @ (state)
  case(state)
     S0 : E = 4'b0011;
     S1 : E = 4'b0100;
     S2 : E = 4'b0101;
     S3 : E = 4'b0110;
     S4 : E = 4'b0111;
     S5 : E = 4'b1000;
     S6 : E = 4'b1001;
     S7 : E = 4'b1010;
     S8 : E = 4'b1011;
     S9 : E = 4'b1100;
     default : E = 4'b0000;
  endcase
endmodule

이렇게 가능하다.

이것을 보면 동작수준 모델이 항상 최선의 선택이 아님을 알수있다.
때로는 다른방법이 더 짧게 코딩이 될수도 있다.
myeva
2007/05/02 02:48 2007/05/02 02:48
top
TAG BCD, Behavioral, Dataflow, Excess-3, Gatelevel, GrayCode, Verilog, Verilog HDL


Trackback[트랙백] 0 : Comment[댓글] 0

Trackback Address :: http://skstar.net/blog/trackback/152

Write a comment


◀ PREV : [1] : NEXT ▶

 


관리자 : 새글쓰기
내가 하는 삽질은 활용이지! 활용이라는것이 어떤건지 보여주겠어~

카테고리

전체 (180)
전공공부 (9)
윈도우활용 (24)
동영상 (4)
휴대기기 (20)
휴대폰 (17)
인터넷 (59)
구글(Google) (3)
도메인(Domain) (26)
웹호스팅(Hosting) (6)
태터툴즈(Tattertools) (11)
신기한서비스 (2)
워드프레스(WordPress) (0)
지름신 (3)
Photos (0)
Macro (0)
일기장 (21)
음악과 함께 (2)
In Houston (3)
닌텐도 DS(NDS) (29)
라디오 (1)
돈이야기 (9)

태그목록

  • 윈도우 태터툴즈 중국어버전 파이어폭스 길벗 SHOW 애드센스댓글 alexa 피파2006 마리오카트DS VIAO 원낸드플래시 Mercedes Benz 펀펀라디오 네이버 블로그 GMA945 DC인사이드 해지 PS 실행창 디시인사이드

최근에 올라온 글

  • 옥션 이벤트 - 1회용 손난로(.... (1)
  • JSP 개발을 위한 초고속 셋팅....
  • 웨스턴 유니온(Western Union.... (1)
  • 한국은행이 7월30일에 발표한....
  • 오늘(7월30일) 현물,선물,옵....

최근에 달린 댓글

  • 역시 님은 옥션매니아 엉엉.... 피 2008
  • 늦었지만 여기까지 보냅니다.. myeva 2008
  • 저두 유재석나오느너 너무너.... 잉~ 2008
  • 관리자만 볼 수 있는 댓글입.... 비밀방문자 2008
  • 국민은행, 부산은행, 기업은.... kikiwo 2008

최근에 받은 트랙백

  • 실망스런 닷네임...
    삽질매니아 2008
  • 도메인 및 호스팅 업체인 X네....
    삽질매니아 2008
  • Gmail 알리미.
    블로그를 살리자~!!! 2008
  • 고객실망도 1위 닷네임코리아.
    RERIC.COM 2007
  • 네이버 미수녀?.
    5월의 작은 선인장 2006

글 보관함

  • 2008/12 (2)
  • 2008/08 (1)
  • 2008/07 (4)
  • 2008/05 (2)
  • 2008/04 (2)

달력

«   2009/01   »
일 월 화 수 목 금 토
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

링크

  • DCinside 주식갤러리.
  • 비누넷.
  • 우울한 피.
  • 테터툴즈.

244

180

-20 days

today : 82

Total : 179160

Tattertools
rss


위치로그 : 태그 : 방명록 : 관리자
myeva’s Blog is powered by Tattertools.com / Designed by plyfly.net