///
/Verilog左移位、、、、、、、、、、、
//
module shift_left(clk,rs,in,out);
input clk;//时钟信号输入端口
input rs;//高电平复位信号端口
input [7:0]in;//数据输入信号端口
output reg[7:0]out;//数据输出信号端口
always@(posedge clk)begin
if(rs)begin//如果复位信号为高电平
out<=8'b0;
end
//否侧左移
else begin
out<={in[6:0],in[7]};//把高位拿走
end
end
endmodule
///
/Verilog左移位仿真验证
//
`timescale 1 ps/ 1 ps
module shift_left_vlg_tst();
// constants
// general purpose registers
reg eachvec;
// test vector input registers
reg rs;
reg clk=0;
reg [7:0] in="k";
// wires
wire [7:0] out;
// assign statements (if any)
shift_left i1 (
// port map - connection between master ports and signals/registers
.clk(clk),
.in(in),
.out(out),
.rs(rs)
);
parameter s_clk=2000;
always #(s_clk)clk=~clk;
initial
begin
// code that executes only once
// insert code here --> begin
#(s_clk%20)rs=1'b1;
#(s_clk*2)rs=1'b0;
// --> end
$display("Running testbench");
end
always
// optional sensitivity list
// @(event1 or event2 or .... eventn)
begin
// code executes for every event on sensitivity list
// insert code here --> begin
@eachvec;
// --> end
end
endmodule