//14_Vector3
module top_module (
input [4:0] a, b, c, d, e, f,
output [7:0] w, x, y, z );//
// assign { ... } = { ... };
assign {w,x,y,z} = {a,b,c,d,e,f,1'b1,1'b1};
endmodule
//15_Vectorr
module top_module(
input [7:0] in,
output [7:0] out
);
assign out = {in[0],in[1],in[2],in[3],in[4],in[5],in[6],in[7]};
endmodule
//16_Vector4
module top_module (
input [7:0] in,
output [31:0] out );//
// assign out = { replicate-sign-bit , the-input };
assign out = {{24{in[7]}},in[7],in[6],in[5],in[4],in[3],in[2],in[1],in[0]};
endmodule
//17_Vector5
module top_module (
input a, b, c, d, e,
output [24:0] out );//
// The output is XNOR of two vectors created by
// concatenating and replicating the five inputs.
// assign out = ~{ ... } ^ { ... };
assign out = ~{{5{a}},{5{b}},{5{c}},{5{d}},{5{e}}} ^ {5{a,b,c,d,e}};
endmodule
//18_Module
//第一种写法(根据名称连线端口):
module top_module ( input a, input b, output out );
mod_a instance_2 (.out(out), .in1(a), .in2(b));
endmodule
//这种写法有一种好处,即使端口列表发生变化,电线也不会改变,缺点是语法冗长,并且点后必须紧跟端口
//第二种写法(根据位置连线端口):
module top_module ( input a, input b, output out );
mod_a instance_2 (a,b,out);
endmodule
//这种写法类似于C语言,根据位置来确定连线
//mod_a的声明:
//module mod_a ( input in1, input in2, output out );
// Module body(省略)
//endmodule
//19_Module pos
module top_module (
input a,
input b,
input c,
input d,
output out1,
output out2
);
mod_a instance1(out1,out2,a,b,c,d);
endmodule
//其中mod_a的声明:module mod_a ( output, output, input, input, input, input );
//20_Module name
module top_module (
input a,
input b,
input c,
input d,
output out1,
output out2
);
mod_a instance1(.out1(out1), .out2(out2), .in1(a), .in2(b), .in3(c), .in4(d));
endmodule
//mod_a的声明:
//module mod_a ( output out1, output out2, input in1, input in2, input in3, input in4);
//21_Module shift
module top_module ( input clk, input d, output q );
wire out1,out2;
my_dff first(clk,d,out1);
my_dff second(clk,out1,out2);
my_dff third(clk,out2,q);
endmodule
//my_dff的声明:module my_dff ( input clk, input d, output q );