拼接赋值: assign test_1 = {1'b1,{(1 - 1){1'b0}}};
结论:拼接系数为0是,赋值结果是3'b010,与想象中的结果不一样。
移位赋值:assign test_2 = (1'b1 << (1 - 1));
结论:左移个数为0时,结果是3'b001,与想象中的结果一样。
仿真结果:
仿真源代码:
`timescale 1ns / 1ps
module tb_spi();
parameter C_SIZE = 1 ;//读写&字节个数控制
reg spi_clk;
reg spi_reset;
reg spi_wr_en_pos;
reg spi_rd_en_pos;
reg [C_SIZE-1:0] spi_cmd;
initial begin
spi_clk = 1;
spi_reset = 1;
spi_wr_en_pos = 0;
spi_rd_en_pos = 0;
#300
spi_reset = 0;
#300
spi_rd_en_pos = 1;
#200
$finish;
end
always #100 spi_clk = ~spi_clk;
always@(posedge spi_clk)
begin
if(spi_reset)
spi_cmd <= (1'b0 << (C_SIZE - 1));
else if(spi_wr_en_pos)
spi_cmd <= (1'b0 << (C_SIZE - 1));
else if(spi_rd_en_pos)
spi_cmd <= (1'b1 << (C_SIZE - 1));
else
spi_cmd <= spi_cmd;
end
//
wire [2:0] test_1,test_2;
assign test_1 = {1'b1,{(1 - 1){1'b0}}};
assign test_2 = (1'b1 << (1 - 1));
endmodule