Professional Documents
Culture Documents
1)
2)
module pro(
input reset,
input clk,
input [7:0] N,
output outy
);
wire [5:0] w;
wire h,i,j;
data D1(reset,clk,N,w,h,i,j,outy);
control C1(reset,clk,h,i,j,w);
endmodule
module data(
input reset,
input clk,
input [7:0] in_n,
input [5:0] words,
output n_no,
output n0_1,
output c_5,
output out
);
wire [7:0] a,b,c;
wire [3:0] d,e,f;
wire g;
mux #(8)m1(in_n,a,words[0],b);
register_8 r1(reset,clk,b,words[2],c);
shift s1(c,a);
mux #(4)m2(0,d,words[1],e);
register_4 r2(reset,clk,e,words[3],f);
add a1(f,d);
mux #(1) m3(1,0,words[4],g);
ts t1(g,words[5],out);
assign n_no=(c!=0);
assign n0_1=(c[0]==1);
assign c_5=(f==5);
endmodule
module control(
input reset,
input clk,
input n_no,
input n0_1,
input c_5,
output reg[5:0] words
);
reg [2:0] state,next_state;
always@(posedge clk or posedge reset)
begin
if(reset) state<=0;
else state<=next_state;
end
always@(*)
begin
case(state)
3'b000:next_state=3'b001;
3'b001:if(n_no&&n0_1) next_state=3'b010;
else if(n_no&&n0_1==0) next_state=3'b011;
else if(n_no==0&&c_5==0) next_state=3'b100;
else if(n_no==0&&c_5) next_state=3'b101;
3'b010:next_state=3'b011;
3'b011:next_state=3'b001;
3'b100:next_state=3'b100;
3'b101:next_state=3'b101;
endcase
end
always@(*)
begin
case(state)
3'b000:words=6'b001111;
3'b001:words=6'b000000;
3'b010:words=6'b001000;
3'b011:words=6'b000100;
3'b100:words=6'b100000;
3'b101:words=6'b110000;
endcase
end
endmodule
3)
与lab6重复。
4)
加-减法器略:
endmodule