게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
댓글에 엔터수 제한이 있는 듯하며 다시 올립니다.
게시물ID : programmer_4171짧은주소 복사하기
작성자 : 화아신
추천 : 0
조회수 : 325회
댓글수 : 10개
등록시간 : 2014/06/25 11:02:50
죄송합니다... 밤을 새고 혹시나 하는 마음에 올리고 잤는데... 잠결에 썼더니... 너무 생략해놔서 저도 못보겠네요.. ㅜㅜ
 
우선 너무 길어서 다 쓰진 못할 거 같고요 그래도 필요한 부분만 써볼게요...
 
 
ALU.cpp---------------------------------------
#include "ALU.h"
void ALU::ALU_thread()
{
 sc_uint<32>  t_rs;  
 sc_uint<32>  t_rt;
 sc_uint<32>  t_result;
 sc_uint<4>   t_alu_ctrl; 
 while(true){
  t_rs = rs.read();  
  t_rt = rt.read();  
  t_alu_ctrl = alu_ctrl.read();
        switch (t_alu_ctrl) {
   case 0x2:
    // add
    t_result = t_rs + t_rt;
    break;
   case 0x6:
    // subtract
    t_result = t_rs - t_rt;
    break;
   case 0x0:
    // AND
    t_result = t_rs && t_rt;
    break;
   case 0x1:
    // OR
    t_result = t_rs || t_rt;
    break;
   case 0x7:
    // slt 
    t_result = (t_rs < t_rt) ? 1:0;
    
  
  }
  cout << "ALU result : " << t_result.to_string(SC_HEX) << endl;
  if(t_result == 0)
  {
   cout << "zero  : YES" <<   endl;
   zero.write(1);
  }
  else
  {
   cout << "zero  : NO" <<  endl;
   zero.write(0);
  }

  result.write(t_result);
  wait();
 }

}
----------------------------------------------------
 
다음 NOT.cpp 입니다.------------------------------

#include "NOT.h"
void NOT::NOT_thread()
{
 sc_uint<1>  t_in_1;  
 sc_uint<1>  t_out;
 while(true){
  t_in_1 = in_1.read();
  t_out = ~t_in_1;
  out.write(t_out);
  wait();
 }
}
------------------------------------------------------
 
최종 main중 일부분 입니다.----------------------------
 ALU m_ALU("alu");
 m_ALU.rs(S_RS_DATA);
 m_ALU.rt(S_mux2_out);  // Mux 2 출력
 m_ALU.alu_ctrl(S_ALU_CONTROL);
 m_ALU.result(S_ALU_RESULT);
 m_ALU.zero(S_zero);
 ////// NOT  /////////////////////////////
 NOT m_NOT("NOT");
 m_NOT.in_1(S_zero);
 m_NOT.out(S_zeronot);
--------------------------------------------------------
 
이렇게 하면 zero 값이 >> S_zero >> NOT.in_1 >> out=!in_1 >> S_zeronot 해서 보수가 들어가야할 거라고 해봤는데..
 
이게 data흐름으로 보면 계속 0이라서... main에가 S_zero값은 직접 넣어줘봤더니... 바뀌긴 하는 거 같은데...
 
함수에서 값을 불러서 그런지.,, 무슨 이유에서 인지는 모르겠는데 S_zero값이 변해도 S_zeronot이 0으로 꾲혀서요...
 
너무 길어서 ... 올려도 될지는 모르겠는데... 좀 .... 절박?해서 도움부탁드립니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호