1 /***********************************************************************************************************************************/ 2 3 //for循环 4 integer i; 5 for(i=0; i<8; i= i+1)begin 6 data = i; 7 end 8 9 /***********************************************************************************************************************************/
1 /***********************************************************************************************************************************/ 2 3 //随机数 4 data = $random; //产生随机数,产生的随机会根据信号data的位宽自动确认范围 5 data = $urandom_range(min,max); //生成min到max范围内的随机无符号整数 6 data = $random % 10; //产生10以内的随机数 7 8 /***********************************************************************************************************************************/
1 /***********************************************************************************************************************************/ 2 3 //避免在综合时被优化,添加特殊注释语句“/* synthesis keep*/”,注意这个特殊语句只对wire类型有效 4 5 wire dout_vld/* synthesis keep = 1*/; //添加synthesis keep后,dout_vld就不会被SignalTab给优化 6 7 reg[7:0] data_in/* synthesis preserve = 1 */; 8 9 /***********************************************************************************************************************************/
1 /***********************************************************************************************************************************/ 2 3 //强制赋值操作,最后必须释放,需配对操作 4 force u1_inist.xx = 8'haa; //强制赋值 5 release u1_inist.xx; //释放 6 7 /***********************************************************************************************************************************/
1 /***********************************************************************************************************************************/ 2 3 //时间精度 4 `timesclae 1ns/1ns //注意格式,没有结束分号, 单位和精度之间是用的 反斜杠 5 6 /***********************************************************************************************************************************/
1 /**************************************************/ 2 //建议还是加begin end ,后面写就不容易出错 3 initial begin 4 clk = 0; 5 forever begin 6 #(CLK_CYCLE/2); 7 clk = ~clk; 8 end 9 end 10 /**************************************************/ 11 //不加begin end ,在(CLK_CYCLE/2)这个地方不能加分号, 12 //因大部分都是拷贝比多,时间长了忘记细节了,就有时考虑要不要加分号了,很痛苦 13 initial begin 14 clk = 0; 15 forever #(CLK_CYCLE/2) clk = ~clk; 16 end 17 /**************************************************/
1 /**************************************************/ 2 initial begin 3 #1; //先加一个延迟,保证建立时间,避免出现竞争 4 din_vld = 0; 5 din = 0; 6 for(i=0; i<128; i=i+1)begin 7 din_vld = 0; 8 #(CLK_CYCLE*10); 9 din_vld = 1; 10 din = $urandom_range(48, 103); 11 #(CLK_CYCLE); 12 din_vld = 0; 13 end 14 end 15 /**************************************************/
1 /*************************************************************/ 2 parameter NUM = 4'd8; 3 data <= {NUM{1'b1}}; // 等价于data <= 8'b1111_1111; 4 /*************************************************************/
1 /*************************************************************/ 2 data[24-:8] <= din[24-:8]; //等价于data[24:17] <= din[24:17]; 3 //第24位往下数8个 4 /*************************************************************/
1 /*************************************************************/ 2 //位拼接注意一定要加上位宽 3 data = {1'b1,4'd3,2'b11,1'b0}; //位拼接必须带上位宽,否则,被拼接的数会被默认为是32位宽 4 /*************************************************************/