8 비트 Alu Verilog 코드 (게이트 수준)가 필요!

I

icaniwill

Guest

아무도 날 도울 수있는 8 비트 Alu 코드 (게이트 수준) Verilog 필요 한가?

 
다음은 코드입니다
DONT 잊으 Pres 검시관이 버튼
HEPLED모듈 Alu (CLK, 리셋는 A, B, Y를 방공호는 C, N으로, 브이, Z부터);

//************************************************ ****
/ / 8 비트 산술 논리 장치
/ /
/ / 매개 변수 :
/ / CLK ....... 시스템 클럭
/ / 리셋 ..... 시스템 재설정
/ /
대답 ........ 한 입력
/ /
B에 ........ B 조 입력
/ / OP는 ........ 인해
/ /
그 ........ 8 비트 결과 출력
/ / C. ........ 상태 수행
/ /
베로니카 ........ 오버플 상태
/ /
북아 ........ 서명 상태
/ /
위대한 Z 제로 상태 ........
/ /
//************************************************ ****
입력 CLK, 초기화;
입력 [7시];
입력 [7시] B 조;
입력 [15시] OP는;
출력 [7시] Y;
출력 C;
출력 브이;
출력 N;
출력부터 Z;
//------------------------------------------------ ------
/ / 내부 노드
//------------------------------------------------ ------
[7시] Y를 LogicUnit, AluNoShift reg;
와이어 [7시] ArithUnit;
reg shiftout;
와이어 C가 브이, N으로, Z부터;

와이어 carryout;
와이어 ovf;
NEG 등 reg; / / ALU에서 마이너스 상태
제로 reg; / / ALU에서 제로 상태

//------------------------------------------------ -----------
/ / 산술 단위
/ /
/ /이 부분에
대한 권리를 gona 사용 myAddSub ... 뭐랄까 ...
/ / 오히려하려는 것은 추론했다.
/ /
/ / subtractor adder의 작동은 다음과
/ /
/ / OP는 [0] OP는 [1] 휴대 | 수술
/ / 0 0 0 | Y = 한 - 1;
/ / 0 0 1 | Y =;
/ / 0 1 0 | Y = 한 - B 조 - 1;
/ / 0 1 1 | Y = 한 - B 조;
/ / 1 0 0 | Y =;
/ / 1 0 1 | Y = 1;
/ / 1 1 0 | Y = B 조;
/ / 1 1 1 | Y = B 조 1;
/ /
//------------------------------------------------ ------------

myAddSub Add1 (. 한 (A)를,. B 조 (B 조),.의 CI (C),., (OP는 [. BOP (OP는 [0])
ADD가 1]),. Y 양 (ArithUnit),. 콜로라도 (carryout) ,. OVF (ovf));

//---------------------------------------------
/ / 논리 단위
/ / OP는 [1] OP는 [0] | 수술
/ / 0 0 | Y = A와 B
/ / 0 1 | Y = A 또는 B
/ / 1 0 | Y = A XOR B는
/ / 1 1 | Y = A를
//---------------------------------------------

항상 (@ 또는 B 또는 방공호 [1:0])
시작
케이스 (OP는 [1:0])
2'b00 : LogicUnit =의 A & B 조;
2'b01 : LogicUnit = | B 조;
2'b10 : LogicUnit = ^ B 조;
2'b11 : LogicUnit =! 한;
기본값 : LogicUnit = 8'bx;
endcase

//----------------------------------------------
/ / 선택 논리와 arithmatic 사이
/ / OP는 [2] | 수술
/ / 0 | 산술 작업
/ / 1 | 논리 연산
//----------------------------------------------
항상 (OP는 [2] 또는 LogicUnit 또는 ArithUnit)
@시작
만약 (OP는 [2])
AluNoShift = LogicUnit;
그 밖의
AluNoShift = ArithUnit [7시];

//-----------------------------------------------
/ / 전환 작업
/ /
/ / OP는 [3] OP는 [4] OP는 [5] | 수술
/ / 0 0 0 | 놉
/ / 1 0 0 | 쉬프트 왼쪽 (ASL)
/ / 0 1 0 | Arithmentic 교대 (ASR.. 새)
/ / 1 1 0 | 논리 시프트 오른쪽 (LSR)
/ / 0 0 1 | 사진을 왼쪽으로 회전 (rol)
/ / 1 0 1 | 사진을 오른쪽으로 회전 (RoR)
/ / 0 1 1 | 놉
/ / 1 1 1 | 놉
//-----------------------------------------------
항상 (OP는 [5시 3분] 또는 AluNoShift 또는 C)
@시작
케이스 (OP는 [5시 3분])
3'b000 : 시작
Y = AluNoShift; / / 출력은 근무하지 않습니다
shiftout = 0;

3'b001
수 : 시작
Y = (AluNoShift [6시], 1'b0); / / ASL
shiftout = AluNoShift [7];

3'b010 : 시작
Y = (AluNoShift [7], AluNoShift [7시 1분]); / / ASR는
shiftout = AluNoShift [0];

3'b011 : 시작
Y = (1'b0, AluNoShift [7시 1분]); / / LSR
shiftout = AluNoShift [0];

3'b100 : 시작
Y = (AluNoShift [6시]는 C);
shiftout = AluNoShift [7];

3'b101 : 시작
Y = (C가 AluNoShift [7시 1분]); / / LSR
shiftout = AluNoShift [0];

3'b110 : 시작
Y = AluNoShift; / / 출력은 근무하지 않습니다
shiftout = 0;

3'b111 : 시작
Y = AluNoShift; / / 출력은 근무하지 않습니다
shiftout = 0;

기본값 : 시작
Y = 8'bx;
shiftout = 0;

endcase

//------------------------------------------------ -----------
상태 레지스터에 대한 / / 생성 상태 비트
/ /
//------------------------------------------------ -----------

항상 (Y)
개의 @시작
만약 (! Y [0] &! Y [1] &! Y [2] &! Y [3] &! Y [4] &! Y [5] &! Y [6] &! Y [7])
제로 = 1;
그 밖의
제로 = 0;


항상 (Y [7])
@NEG 등 = Y [7];

//------------------------------------------------ -----------
/ / 운반 상태 등록
/ / OP는 [6] OP는 [7] OP는 [8] | 수술
/ / 0 0 0 | 놉
/ / 0 0 1 | 카리 <- adder / 하위 카리 / 대여
/ / 1 0 1 | 카리 <- Shifter 없음
/ / 0 1 1 | 카리 <- 0
/ / 1 1 1 | 카리 <- 1
//------------------------------------------------ -----------

상태 CARRY1 (. CLK (CLK),. (리셋),. 하중 (OP는 [8]), 리셋.는 (carryout),. b (shiftout),. C (1'b0),. 패 (1'b1 ),. 세포 (OP는 [7시 6분]),. (C));

//------------------------------------------------ -----------
/ / 오버플 상태 레지스터
/ / OP는 [9] OP는 [10] OP는 [11] | 수술
/ / 0 0 0 | 놉
/ / 0 0 1 | 오버플 <- adder / 하위 오버플
/ / 1 0 1 | 오버플 <- 외부
/ / 0 1 1 | 오버플 <- 0
/ / 1 1 1 | 오버플 <- 1
//------------------------------------------------ -----------

상태 OVF1 (. CLK (CLK),. (리셋),. 하중 (OP는 [11]), 리셋.는 (ovf),. b (Y [6]),. C (1'b0),. 패 ( 1'b1),. 세포 (OP는 [10시 9분]),. (브이));

//------------------------------------------------ -----------
/ / 제로 상태 등록
/ / OP는 [12] OP는 [13] | 수술
/ / 0 0 | 놉
/ / 1 0 | 제로 <- 제로 Input1
/ / 0 1 | 제로 <- 제로 Input2
/ / 1 1 | 제로 <- 0
//------------------------------------------------ -----------

상태 ZERO1 (. CLK (CLK),. (리셋), 리셋. 하중 (1'b1),.가 (Z부터),. b (제로),. C (1'b1),. 패 (1'b0) ,. 세포 (OP는 [13:12]),. (Z부터));

//------------------------------------------------ -----------
/ / 마이너스 상태 등록
/ / OP는 [14] OP는 [15] | 수술
/ / 0 0 | 놉
/ / 1 0 | Neg <- Neg Input1
/ / 0 1 | Neg <- Neg Input2
/ / 1 1 | Neg <- 0
//------------------------------------------------ -----------

상태 NEG1 (. CLK (CLK),. (리셋), 리셋. 하중 (1'b1),.가 (N)을,. b (Neg),. C (1'b1),. 패 (1'b0) ,. 세포 (OP는 [15:14]),. (N)을);

endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top