module top
(
- input [3:0] x,
- input [3:0] y,
+ input [3:0] x,
+ input [3:0] y,
- output [3:0] A,
- output [3:0] B
- );
-
-assign A = x + y;
-assign B = x - y;
+ output [3:0] A,
+ output [3:0] B
+);
+ assign A = x + y;
+ assign B = x - y;
endmodule
-module adff
- ( input d, clk, clr, output reg q );
+module adff( input d, clk, clr, output reg q );
initial begin
- q = 0;
+ q = 0;
end
- always @( posedge clk, posedge clr )
- if ( clr )
- q <= 1'b0;
- else
- q <= d;
+ always @( posedge clk, posedge clr )
+ if ( clr )
+ q <= 1'b0;
+ else
+ q <= d;
endmodule
-module adffn
- ( input d, clk, clr, output reg q );
+module adffn( input d, clk, clr, output reg q );
initial begin
q = 0;
end
- always @( posedge clk, negedge clr )
- if ( !clr )
- q <= 1'b0;
- else
- q <= d;
+ always @( posedge clk, negedge clr )
+ if ( !clr )
+ q <= 1'b0;
+ else
+ q <= d;
endmodule
-module dffs
- ( input d, clk, pre, clr, output reg q );
+module dffs( input d, clk, pre, clr, output reg q );
initial begin
q = 0;
end
- always @( posedge clk )
- if ( pre )
- q <= 1'b1;
- else
- q <= d;
+ always @( posedge clk )
+ if ( pre )
+ q <= 1'b1;
+ else
+ q <= d;
endmodule
-module ndffnr
- ( input d, clk, pre, clr, output reg q );
+module ndffnr( input d, clk, pre, clr, output reg q );
initial begin
q = 0;
end
- always @( negedge clk )
- if ( !clr )
- q <= 1'b0;
- else
- q <= d;
+ always @( negedge clk )
+ if ( !clr )
+ q <= 1'b0;
+ else
+ q <= d;
endmodule
-module top (\r
-out,\r
-clk,\r
-reset\r
-);\r
+module top ( out, clk, reset );\r
output [7:0] out;\r
input clk, reset;\r
reg [7:0] out;\r
\r
always @(posedge clk, posedge reset)\r
- if (reset) begin\r
- out <= 8'b0 ;\r
- end else\r
- out <= out + 1;\r
-\r
-\r
+ if (reset)\r
+ out <= 8'b0;\r
+ end\r
+ out <= out + 1;\r
endmodule\r
-module dff
- ( input d, clk, output reg q );
- always @( posedge clk )
- q <= d;
+module dff ( input d, clk, output reg q );
+ always @( posedge clk )
+ q <= d;
endmodule
-module dffe
- ( input d, clk, en, output reg q );
+module dffe( input d, clk, en, output reg q );
initial begin
- q = 0;
+ q = 0;
end
- always @( posedge clk )
- if ( en )
- q <= d;
+ always @( posedge clk )
+ if ( en )
+ q <= d;
endmodule
- module fsm (\r
- clock,\r
- reset,\r
- req_0,\r
- req_1,\r
- gnt_0,\r
- gnt_1\r
- );\r
- input clock,reset,req_0,req_1;\r
- output gnt_0,gnt_1;\r
- wire clock,reset,req_0,req_1;\r
- reg gnt_0,gnt_1;\r
+ module fsm ( clock, reset, req_0, req_1, gnt_0, gnt_1 );\r
+ input clock,reset,req_0,req_1;\r
+ output gnt_0,gnt_1;\r
+ wire clock,reset,req_0,req_1;\r
+ reg gnt_0,gnt_1;\r
\r
- parameter SIZE = 3 ;\r
- parameter IDLE = 3'b001,GNT0 = 3'b010,GNT1 = 3'b100,GNT2 = 3'b101 ;\r
+ parameter SIZE = 3;\r
+ parameter IDLE = 3'b001;\r
+ parameter GNT0 = 3'b010;\r
+ parameter GNT1 = 3'b100;\r
+ parameter GNT2 = 3'b101;\r
\r
- reg [SIZE-1:0] state;\r
- reg [SIZE-1:0] next_state;\r
-\r
- always @ (posedge clock)\r
- begin : FSM\r
- if (reset == 1'b1) begin\r
- state <= #1 IDLE;\r
- gnt_0 <= 0;\r
- gnt_1 <= 0;\r
- end else\r
- case(state)\r
- IDLE : if (req_0 == 1'b1) begin\r
- state <= #1 GNT0;\r
- gnt_0 <= 1;\r
- end else if (req_1 == 1'b1) begin\r
- gnt_1 <= 1;\r
- state <= #1 GNT0;\r
- end else begin\r
- state <= #1 IDLE;\r
- end\r
- GNT0 : if (req_0 == 1'b1) begin\r
- state <= #1 GNT0;\r
- end else begin\r
- gnt_0 <= 0;\r
- state <= #1 IDLE;\r
- end\r
- GNT1 : if (req_1 == 1'b1) begin\r
- state <= #1 GNT2;\r
- gnt_1 <= req_0;\r
- end\r
- GNT2 : if (req_0 == 1'b1) begin\r
- state <= #1 GNT1;\r
- gnt_1 <= req_1;\r
- end\r
- default : state <= #1 IDLE;\r
- endcase\r
- end\r
+ reg [SIZE-1:0] state;\r
+ reg [SIZE-1:0] next_state;\r
\r
+ always @ (posedge clock)\r
+ begin : FSM\r
+ if (reset == 1'b1) begin\r
+ state <= #1 IDLE;\r
+ gnt_0 <= 0;\r
+ gnt_1 <= 0;\r
+ end \r
+ else\r
+ case(state)\r
+ IDLE : if (req_0 == 1'b1) begin\r
+ state <= #1 GNT0;\r
+ gnt_0 <= 1;\r
+ end else if (req_1 == 1'b1) begin\r
+ gnt_1 <= 1;\r
+ state <= #1 GNT0;\r
+ end else begin\r
+ state <= #1 IDLE;\r
+ end\r
+ GNT0 : if (req_0 == 1'b1) begin\r
+ state <= #1 GNT0;\r
+ end else begin\r
+ gnt_0 <= 0;\r
+ state <= #1 IDLE;\r
+ end\r
+ GNT1 : if (req_1 == 1'b1) begin\r
+ state <= #1 GNT2;\r
+ gnt_1 <= req_0;\r
+ end\r
+ GNT2 : if (req_0 == 1'b1) begin\r
+ state <= #1 GNT1;\r
+ gnt_1 <= req_1;\r
+ end\r
+ default : state <= #1 IDLE;\r
+ endcase\r
+ end\r
endmodule\r
-module latchp
- ( input d, clk, en, output reg q );
+module latchp ( input d, clk, en, output reg q );
always @*
if ( en )
q <= d;
endmodule
-module latchn
- ( input d, clk, en, output reg q );
+module latchn ( input d, clk, en, output reg q );
always @*
if ( !en )
q <= d;
endmodule
-module latchsr
- ( input d, clk, en, clr, pre, output reg q );
+module latchsr ( input d, clk, en, clr, pre, output reg q );
always @*
if ( clr )
q <= 1'b0;
module top
(
- input [0:7] in,
- output B1,B2,B3,B4,B5,B6,B7,B8,B9,B10
- );
-
- assign B1 = in[0] & in[1];
- assign B2 = in[0] | in[1];
- assign B3 = in[0] ~& in[1];
- assign B4 = in[0] ~| in[1];
- assign B5 = in[0] ^ in[1];
- assign B6 = in[0] ~^ in[1];
- assign B7 = ~in[0];
- assign B8 = in[0];
- assign B9 = in[0:1] && in [2:3];
- assign B10 = in[0:1] || in [2:3];
-
+ input [0:7] in,
+ output B1,B2,B3,B4,B5,B6,B7,B8,B9,B10
+);
+ assign B1 = in[0] & in[1];
+ assign B2 = in[0] | in[1];
+ assign B3 = in[0] ~& in[1];
+ assign B4 = in[0] ~| in[1];
+ assign B5 = in[0] ^ in[1];
+ assign B6 = in[0] ~^ in[1];
+ assign B7 = ~in[0];
+ assign B8 = in[0];
+ assign B9 = in[0:1] && in [2:3];
+ assign B10 = in[0:1] || in [2:3];
endmodule
module top
(
- input [5:0] x,
- input [5:0] y,
-
- output [11:0] A,
- );
-
-assign A = x * y;
+ input [5:0] x,
+ input [5:0] y,
+ output [11:0] A,
+);
+ assign A = x * y;
endmodule
endmodule
module mux4 ( S, D, Y );
-
-input[1:0] S;
-input[3:0] D;
-output Y;
-
-reg Y;
-wire[1:0] S;
-wire[3:0] D;
-
-always @*
-begin
- case( S )
- 0 : Y = D[0];
- 1 : Y = D[1];
- 2 : Y = D[2];
- 3 : Y = D[3];
- endcase
-end
-
+ input[1:0] S;
+ input[3:0] D;
+ output Y;
+
+ reg Y;
+ wire[1:0] S;
+ wire[3:0] D;
+
+ always @*
+ begin
+ case( S )
+ 0 : Y = D[0];
+ 1 : Y = D[1];
+ 2 : Y = D[2];
+ 3 : Y = D[3];
+ endcase
+ end
endmodule
module mux8 ( S, D, Y );
-
-input[2:0] S;
-input[7:0] D;
-output Y;
-
-reg Y;
-wire[2:0] S;
-wire[7:0] D;
-
-always @*
-begin
- case( S )
- 0 : Y = D[0];
- 1 : Y = D[1];
- 2 : Y = D[2];
- 3 : Y = D[3];
- 4 : Y = D[4];
- 5 : Y = D[5];
- 6 : Y = D[6];
- 7 : Y = D[7];
- endcase
-end
-
+ input[2:0] S;
+ input[7:0] D;
+ output Y;
+
+ reg Y;
+ wire[2:0] S;
+ wire[7:0] D;
+
+ always @*
+ begin
+ case( S )
+ 0 : Y = D[0];
+ 1 : Y = D[1];
+ 2 : Y = D[2];
+ 3 : Y = D[3];
+ 4 : Y = D[4];
+ 5 : Y = D[5];
+ 6 : Y = D[6];
+ 7 : Y = D[7];
+ endcase
+ end
endmodule
module mux16 (D, S, Y);
input [3:0] S;
output Y;
-assign Y = D[S];
-
+ assign Y = D[S];
endmodule
-module top (\r
-out,\r
-clk,\r
-in\r
-);\r
+module top(out, clk, in);\r
output [7:0] out;\r
input signed clk, in;\r
reg signed [7:0] out = 0;\r
begin\r
out <= out >> 1;\r
out[7] <= in;\r
- end\r
-\r
+ end \r
endmodule\r
-module tristate (en, i, o);
+module tristate(en, i, o);
input en;
input i;
output reg o;
-
+
always @(en or i)
- o <= (en)? i : 1'bZ;
+ o <= (en)? i : 1'bZ;
endmodule