*재*
Bronze개인인증
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 5
검색어 입력폼
  • VHDL을 사용하여 32비트 MIPS 프로세서를 설계 평가A좋아요
    목 차1. 목적 및 개선 사항2. 구현된 명령어 집합3. 컴포넌트 소스 및 분석4. 어셈블리 언어 변환 문제5. 고 찰6. 참고 문헌1. 목적 및 개선사항이번 프로젝트의 목적은 VHDL을 통하여 MIPS를 설계하는 동시에 기능의 추가 및 최적화에 그 목적이 있습니다. 프로젝트를 시작하면서 생각한 최종 버전은 하버드 아키텍처를 사용함과 동시에 두 개의 메모리를 사용하여 명령어 및 데이터 메모리를 분리 한 후, 메모리로부터 명령어를 읽고 쓰는 것이 동시에 가능하도록 만드는 것이었습니다. 이렇게 하면 현재 명령어의 처리와 동시에 다음 명령어를 메모리로부터 가져 올 수 있기 때문에, 이론상 속도가 빨라지게 되기 때문입니다. 하지만 제가 구현하려고 하는 MIPS 명령어(lw와 sw) 중에서 데이터 메모리에 접근을 시도하는 명령어는 컴파일러인 gcc를 기준으로 할 때, 전체 평균의 33% 밖에 해당되지 않는다는 사실과 한 사이클에서 메모리의 쓰기와 읽기가 같이 발생할 비율이 낮다는 점에 착안하여, 하버드 아키텍처뿐 만아니라 다른 개선점을 찾아야겠다고 생각했습니다.이에 따라 일차적으로 개선해야겠다고 생각한 방향은 일반적으로 많이 사용되는 R-format 명령어의 처리 시간을 줄이는 방법이었습니다. R-format 은 Execution 단계인 ALU에서 많은 지연이 일어나기 때문에, ALU에 사용되는 컴포넌트를 통합하여 데이터 패스를 줄이고, Carry 지연을 일으키는 Ripple Carry Adder를 Carry Look-Ahead Adder로 바꾸고 새롭게 게이트 연산들과 Booth 알고리즘을 사용한 곱셈기를 추가하였습니다.MIPS 코어 명령어명령어사용 빈도R-formatadd, sub, addi, addu, addiu,약 44%subu, and, or xor, nor, andimult, div, slt, sll, srlLoadlw약 21%Storesw약 12%- gcc와 spice에서 사용되는 MIPS명령어의 빈도 수 -덧셈기비트최대지연시간(ns)평균 면적(CLB)Ripple Carry16 x 16212.7940.00Carry Look-Ahead16 x 16143.6940.00Carry-Select16 x 16102.74108.00- 여러 가지 덧셈기 비교 자료 -곱셈기평균면적(CLB)최대지연시간(ns)최고속도에서의 전력(mW)Array1165187.8716.6506(188ns)Modified Booth1292139.4123.136(140ns)Wallace Tree1659101.1430.95(101.14ns)- 여러 가지 곱셈기 비교 자료 -ALU는 MIPS내에서 메모리 주소의 계산 및 각종 연산을 실행하는데 가장 큰 영향을 미치는 컴포넌트로, 블록 사이즈 및 속도 두 가지의 요건을 모두 만족시키는 Carry Look-Ahead Adder와 Booth 알고리즘을 사용한 곱셈기를 통하여, 연산을 하는데 있어서의 지연 시간을 크게 단축시킬 수 있었습니다.다음으로 생각한 개선 방향은 MIPS 프로세서 동작 과정에서의 지연을 최대한 줄이기 위해 블록간의 데이터 이동에 사용되는 데이터 패스를 최대한 짧게 하는 것이었습니다. 이를 위해 시뮬레이션을 위한 출력 포트에 사용되는 신호선(signal)들을 대부분 제거하였고, 불필요한 컴포넌트의 수를 최대한 줄이기 위해서 MUX와 레지스터 A, B 같은 보조적인 컴포넌트들은 메인 컴포넌트에 통합시켰습니다.신호 이름인가되지 않은 경우인가된 경우RegDst목적지 레지스터 번호가 rt 필드에서 온다.목적지 레지스터 번호가 rd 필드에서 온다.RegWrite아무 일도 수행하지 않는다.레지스터 파일에 쓰기가 행해진다.ALUSrcAALU의 첫 번째 피연산자가 PC이다.ALU의 첫 번째 피연산자가 A레지스터이다.MemRead아무 일도 수행하지 않는다.메모리 주소 입력에 해당하는 메모리의 내용이 데이터 출력에 놓여진다.MemWrite아무 일도 수행하지 않는다.메모리 주소 입력에 해당하는 곳에 데이터 입력이 쓰여진다.MemtoReg레지스터의 쓰기 데이터 값이 ALUOut으로부터 온다.레지스터의 쓰기 데이터 값이 MDR로부터 온다.IorDPC가 메모리의 주소를 지정한다.ALUOut가 메모리의 주소를 지정한다.IRWrite아무일도 수행하지 않는다.메모리의 출력이 IR에 쓰여진다.PCWrite아무일도 수행하지 않는다.PC에 쓴다. 쓰는 값은 PCSource에 의해 제어된다.PCWriteCond아무일도 수행하지 않는다.ALU의 Zero 출력이 1일 때 PC에 쓴다.- 1비트 컨트롤 신호에 따른 동작 -마이크로프로세서 교재 한글판 374페이지에 나와 있는 유한 상태 다이어그램에서는 기본적인 MIPS 명령어들 밖에 지원하지 않고, 하버드 아키텍처를 만들기 위해서는 새로운 유한 상태 다이어그램이 필요하다고 느꼈습니다. 또한 addi나 subi 같은 명령어는 자주 사용되는 명령어임에도 불구하고, 구현되지 않았음을 볼 수 있었습니다. 그래서 위의 컨트롤 신호에 따른 동작 차트와 아래의 그림을 참고하여 ALUOp 부분과 ALUSrcB 부분을 최적화하여, 분기 명령어도 구동가능하게 하였으며, 메모리 관련 신호 부분에서 명령어와 관련된 것은“I_”로 시작하고 데이터와 관계된 메모리는“D_”로 시작하는 단어로 변경하였습니다.신호 이름값효 과ALUOp00ALU가 덧셈을 수행한다.01ALU가 뺄셈을 수행한다.10명령어의 기능 필드가 ALU의 연산을 결정한다.ALUSrcB00ALU의 두 번째 피연산자가 B 레지스터로부터 온다.01ALU의 두 번째 피연산자가 상수 4이다.10ALU의 두 번째 피연산자가 부호 확장된 IR의 하위 16비트이다.11ALU의 두 번째 피연산자가 부호 확장되고 2비트 자리 이동된 IR 16비트PCSource00PC+4의 값이 PC로 전달된다.01ALUOut(분기 목적지 주소)의 내용이 PC로 전달된다.10점프 목적지 주소(IR[25-0])이 2자리 자리이동되고 PC+4[31-28]과 연결됨)가 PC로 전달된다.- 2비트 컨트롤 신호에 따른 동작 -R-formatLoadStoreBranchJump- MIPS 명령어에 따른 데이터 패스 -- Harvard 아키텍처를 위해 개선한 유한 상태 다이어그램 -2. 구현된 명령어 집합이 름필 드설 명필드 크기6비트5비트5비트5비트5비트6비트모든 MIPS명령어는 32비트R-formatoprsrtrdshamtfunct산술 명령어의 형식I-formatoprsrtaddress/immediate전송, 분기, 수치 명령어의 형식J-formatoptarget address점프 명령어의 형식- MIPS 명령어 형식 -이 름레지스터 번호용 도호출시 보존 여부$zero0상수 값 0Na$v0-$v12-3결과 및 수식 계산 값No$a0-$a34-7인 수Yes$t0-$t78-15임 시No$s0-$s716-23저 장Yes$t8-$t924-25임 시No$gp28전역 포인터Yes$sp29스택 포인터Yes$fp30프레임 포인터Yes$ra31복귀 주소Yes- MIPS 레지스터 사용 형식 -op(31:26)명령어 형식000000R-format001000add immediate101100sub immediate000100branch equal100011load word101011store word000010jump- op(31:26) 코드에 따른 명령어 형식 -op(31:26), funct(5:0)명령어(R-format)000000, 011000mult000000, 100000add000000, 100010subtract000000, 100100and000000, 100101or000000, 100110xor000000, 100111nor000000, 101010slt- funct(5:0) 코드에 따른 R-format 명령어 -3. 컴포넌트 소스 및 분석(1) SignExtend.vhdSignExtend.vhd 는 ALUSrcB 신호가 10이나 11일 때, 즉, immediate 명령일 때, instuction의 부호를 확장 시키는데 쓰인다.-- 소스 코드 ---- SignExtend.vhd --library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity SignExtend is -- SignExtend 컴포넌트를 위한 entity 선언port (Input: in std_logic_vector(15 downto 0); -- 16비트의 입력Output: out std_logic_vector(31 downto 0));-- 출력은 비트 확장하여 32비트로 출력end SignExtend;architecture behavior of SignExtend isbeginprocess (Input)beginif (Input(15) = '0') then-- 입력 비트의 15번 비트가 0일때 왼쪽 16비트를 0으로 채움Output
    공학/기술| 2007.01.19| 64페이지| 2,000원| 조회(1,818)
    미리보기
  • vhdl을 사용한 신호등 설계 평가B괜찮아요
    if (reset = `1`) then -- reset이 1이면, 카운트를 리셋count <= (others=>`0`);c_state <= s0; elsif (clk`event and clk = `1`) then -- 클럭이 발생하면 시작 if (check_time = `1`) then-- 여기서 check_time은 0000으로 1초를 표현하는데 있어서 10초의 0000과 중복이 되므로-- check_time이 1인 것은 앞에서의 1초가 지났다는 것을 의미한다.count <= (others=>`0`);c_state <= n_state; elsif (count = "1001") then-- 신호등의 무한 동작을 위해서 카운트가 9(10초)가 될 때, 카운트를 리셋 한다.count <= (others=>`0`);c_state <= n_state; else count <= count + 1; end if;end if; end process;end behavioral;
    공학/기술| 2007.01.19| 5페이지| 1,000원| 조회(2,705)
    미리보기
  • 매트랩을 이용한 델타 모듈레이션의 구현
    1. HOMEWORK #2-1만약 앞의 조건을 만족하지 않는다면, 델타(위에서 제시한 스텝사이즈)의 크기가 너무 작아서 입력파형 m(t)의 급격한 변화를 쫓아가지 못하게 되므로 결국 mq(t)가 m(t)보다 작게 되어 앞의 결과에서 차이가 나게 된 것이다.
    공학/기술| 2007.01.19| 16페이지| 1,000원| 조회(896)
    미리보기
  • 매트랩을 이용한 QPSK 구현과 RRC filter로 전송신호의 파형을 형성, 필터링후의 PDF 표현 평가B괜찮아요
    6. 프로젝트 2 고찰프로젝트 2의 결과를 살펴보면, 처음 구한 것은 ideal한 채널일 때의 채널환경이고, 두 번째 구한 것은 채널이 ½만큼 지연된 채널환경을 가진다.우선 AWGN Noise가 더해지고, 수신/송신 단에서 필터링을 하게 된다. 수신단에서 필터를 거친 신호는 정해진 위치에서 샘플링을 통해 복원하게 된다. 그리고 앞에서 수신 심볼의 수가 많아 질수록 시간 응답에서의 피크 치가 많아 지는 것을 확인할 수 있었다.
    공학/기술| 2007.01.19| 14페이지| 1,000원| 조회(2,255)
    미리보기
  • vhdl을 이용한 32비트 감가산기 평가A좋아요
    (2) fulladder를 사용한 N비트 리플 캐리 가산기 VHDL 소스 코드-- n_adder.vhd 파일 --library ieee;use ieee.std_logic_1164.all;entity n_adder isgeneric(x: natural:=32);port (a, b : in std_logic_vector(x-1 downto 0);cin : in std_logic; cout : out std_logic; sum : out std_logic_vector(x-1 downto 0));end n_adder;architecture behavior of n_adder iscomponent fulladderport(a, b : in std_logic; cin : in std_logic; cout : out std_logic; sum : out std_logic);end component;signal rca : std_logic_vector(x-1 downto 1);beginadder0: for i in (x-1) downto 0 generate
    공학/기술| 2007.01.19| 11페이지| 1,000원| 조회(1,355)
    미리보기
전체보기
받은후기 5
5개 리뷰 평점
  • A+최고예요
    0
  • A좋아요
    2
  • B괜찮아요
    2
  • C아쉬워요
    1
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 04월 24일 금요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
4:30 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감