انجمن گروه موج سازان
طراحی واحد کنترل - نسخه قابل چاپ

+- انجمن گروه موج سازان (http://www.mojsazan.com/forum)
+-- انجمن: برنامه نویسی عمومی (http://www.mojsazan.com/forum/forumdisplay.php?fid=1)
+--- انجمن: برنامه نویسی عمومی (http://www.mojsazan.com/forum/forumdisplay.php?fid=3)
+--- موضوع: طراحی واحد کنترل (/showthread.php?tid=3722)



طراحی واحد کنترل - worm - 12-28-2013

سلام 
اگه کد واحد کنترل به زبان verilog رو دارید ممنون میشم اینجا بزارید


RE: طراحی واحد کنترل - مهرداد عباسی - 12-28-2013

با سلام خدمت شما

من در این ضمینه فعالیتی نداشتم ولی نمیدانم شاید این کد به درد بخودر

CONTROL UNIT
کد:
//Main module for control unit
module control(op,clk,rst,s,d,sd,alucon,decode);
input [9:0]op;
input clk;
output [2:0]s,d;
output [5:0]decode;
output [3:0]alucon;
output rst,sd;
reg [3:0]in;
reg [5:0]decode;
reg [9:0]r;
reg [3:0]alucon;
reg[2:0]s,d;
reg rst,sd;
initial
begin
decode=6'b100000;
end
always@(posedge clk)
begin
if(decode==6'b100000)
begin
in=op[9:6];
s=op[2:0];
r=op;
decode={1'b0,decode[5:1]};
case(in)
0 : begin//clr
rst=1'b1;
sd=1'b1;
d=3'b000;
alucon=4'b0000;
end
1 : begin//mov
rst=1'b0;
sd=1'b1;
d=op[5:3];
alucon=4'b0000;
end
2 : begin//add operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0001;
end
3 : begin//subtraction operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0010;
end
4 : begin//multiplication operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0011;
end
5 : begin//division operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0100;
end
6 : begin//and operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0101;
end
7 : begin//or operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0110;
end
8 : begin//xor operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0111;
end
9 : begin//left shfit
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b1000;
end
10 : begin//right shift
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b1001;
end
11 : begin//rotate left
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b1010;
end
12 : begin//rotate right
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b1011;
end
default: $display("invalid operation");
endcase
end
else if(decode==6'b0)
begin
if(r==op)
decode=6'b000000;
else
decode=6'b100000;
end
else
decode={1'b0,decode[5:1]};
end
endmodule



RE: طراحی واحد کنترل - worm - 12-28-2013

(12-28-2013, 10:17 PM)مهرداد عباسی نوشته: با سلام خدمت شما

من در این ضمینه فعالیتی نداشتم ولی نمیدانم شاید این کد به درد بخودر

CONTROL UNIT
کد:
//Main module for control unit
module control(op,clk,rst,s,d,sd,alucon,decode);
input [9:0]op;
input clk;
output [2:0]s,d;
output [5:0]decode;
output [3:0]alucon;
output rst,sd;
reg [3:0]in;
reg [5:0]decode;
reg [9:0]r;
reg [3:0]alucon;
reg[2:0]s,d;
reg rst,sd;
initial
begin
decode=6'b100000;
end
always@(posedge clk)
begin
if(decode==6'b100000)
begin
in=op[9:6];
s=op[2:0];
r=op;
decode={1'b0,decode[5:1]};
case(in)
0 : begin//clr
rst=1'b1;
sd=1'b1;
d=3'b000;
alucon=4'b0000;
end
1 : begin//mov
rst=1'b0;
sd=1'b1;
d=op[5:3];
alucon=4'b0000;
end
2 : begin//add operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0001;
end
3 : begin//subtraction operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0010;
end
4 : begin//multiplication operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0011;
end
5 : begin//division operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0100;
end
6 : begin//and operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0101;
end
7 : begin//or operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0110;
end
8 : begin//xor operation
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b0111;
end
9 : begin//left shfit
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b1000;
end
10 : begin//right shift
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b1001;
end
11 : begin//rotate left
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b1010;
end
12 : begin//rotate right
rst=1'b0;
sd=1'b0;
d=3'b001;
alucon=4'b1011;
end
default: $display("invalid operation");
endcase
end
else if(decode==6'b0)
begin
if(r==op)
decode=6'b000000;
else
decode=6'b100000;
ewnd
else
decode={1'b0,decode[5:1]};
end
endmodule
ممنون ولی یکم بد نوشته.پس فکر نکنم کسی اینجا این کد و داشته  باشه

http://12mvl002-verilogcoding.blogspot.com/2012/12/control-unit.html?m=1