독서노트(Verilog HDL 그런 것들 모델링 편1)

2578 단어 독서 노트
독서노트(Verilog HDL 그런 것들 모델링 편1) 설명: 코드를 쓰는 것이 별로 좋지 않아서 선배에게 배우고 자신을 향상시킨다.깨달음:시스템->봉인->모듈 같은 차원 구조는Verilog뿐만 아니라 기본적인 모든 코드는 이렇게 구분할 수 있다.2:'코드 스타일'이나'코드 구조'는 확실히 잘 고려해야 할 문제이다.같은 코드 스타일은 읽기와 유지보수에 편리하다.3. 대부분의 코드 디자인은 데이터 흐름의 선후 순서에 따라 진행되기 때문에 각 모듈의 실현 과정에서'모방 순서 조작'을 사용하면 디자인의 방향을 더욱 분명하게 할 수 있다. 물론 그 중의 문제는 어떻게 수많은 기능에서 모듈을 세분화하는가이다. 이 과정은 시간이 많이 걸린다. 각 모듈의 기능을 확정하면전체 시스템 구조도 눈앞에 나타난다. 그리고 시스템 구조에 따라 각 모듈의 기능을 최적화한다. 이렇게 교체하면 복잡한 시스템 기능을 실현할 수 있다.  
진도: 완료(시간 문제, 프로그래밍 사상에만 주목)
시간의 시
  
1. 시스템 모델링 모듈 봉인 모듈
  
2. 모듈 봉인: 저급 모델링은 바로 이런 것이다. 초기의 모델링은 우리는 모든 하드웨어 자원을 대상으로'기초를 세울 뿐이다.
그저이 기초는 비록 호출할 수 있지만 진정한 완성품은 아니다.하면, 만약, 만약...
완성품을 위해 이 기초는 이른바 봉인을 집행해야 한다.
  
3. 모든 간단한 기능 모듈은 직원처럼 보일 수 있다.
모든 간단한 제어 모듈은 지도자처럼 보일 수 있다.
모든 간단한 조합 모듈은 한 조로 보일 수 있다.
각 조합 모듈을 다시 조합하면 하나의 큰 조로 보일 수 있다.
모든 큰 그룹은 특정한'목적'을 위해 존재하고 독립적으로 운행하는 능력이 있으면 부서(인터페이스)가 될 수 있다.
마지막으로 많은 인터페이스가 조합되면 하나의 시스템이 된다.
       
이것이 바로'저급 모델링'의 가장 기본적인 사고방식이다.
  
4. 필자의 모델링 기교 - 저급 모델링은'어떻게 모델링하는가'에 관심을 갖는 것일 뿐이다.필자는 코드 바람
칸 또는 코드 구조.실험의 시작부터 실험의 끝까지 필자는 모두 같은'코드 스타일'을 사용했다.
자신의 코드 스타일을 어떻게 유지해야 하는지는 이 노트에서 토론하는 범위가 아니지만, 필자는 독자들이
필자의 코드 스타일을 참고하다.
  
5. 모방 순서를 단독으로 사용하는 것은 단점이 있다.
a:모듈의 중복, 자원의 소모.
b:건모량이 많고 연결 설계가 다양합니다.
c:모듈 호출의 난이도.
      
만약 독자가 필자의 이런 인내심을 가지고 있다면 이런 노동은 당연히 문제가 없을 것이다.하지만 사실 필자도
이런 모델링 방법은 매우 옹졸하고 모듈의 연결도 매우 어렵다.그래서 저희가 또 다른'모조품'이 필요해요.
순서 조작 모델링 방법은 4-1장과 4-2장의 방법은 소형의'모방 순서 조작'에만 적합할 뿐이다.
이 방법은 명령식의 모방 순서 조작이기도 하다.
    
6. 이른바'명령식의 모방 순서 조작'은 각 기능 모듈을 명령을 통해 호출하는 것이다.
   
 
    always @ ( posedge or CLK or negedge RSTn )
    if( !RSTn )
    begin
      i <= 4'd0;
      rPin_Out <= 1'b0;
      isDone <= 1'b0;
      ......
    end
    ===> else if( Function_Start_Sig[1] )
    case( i )
      // S      
      ......
      4'd 9:
      begin isDone <= 1'b1; i <= i + 1'b1; end
      4'd10:
      begin isDone <= 1'b0; i <= 4'd0;
    endcase
    ===> else if( Function_Start_Sig[0] )
    case( i )
      // 0      
      ......
      4'd 9:
      begin isDone <= 1'b1; i <= i + 1'b1; end
      4'd10:
      begin isDone <= 1'b0; i <= 4'd0;
    endcase
    /*************************************************/
    
           S    ,       Function_Start_Sig 
       2'b10   。

    

좋은 웹페이지 즐겨찾기