Verilog仿真时总是边沿触发 , 怎样改为电平触发 因为我模拟按键的时候while( (!k0) ) ;总是直接过去了
//定义输入输出inputreset;inputen,clr;inputk0,k1,k2,k3,k4,k5;output[16:0]code;//定义类型reg[15:0...
//定义输入输出 input reset ; input en,clr; input k0,k1,k2,k3,k4,k5 ; output [16:0] code ; //定义类型 reg [15:0] code ; reg [3:0] temp ; always @( reset or clr or temp or en or k0 or k1 or k2 or k3 or k4 ) begin if( (!reset) || (!clr) ) begin code = 16'h0000; end else if(en && ( (!k0)||(!k1)||(!k2)||(!k3)||(!k4) )) begin while( (!k0)||(!k1)||(!k2)||(!k3)||(!k4) ) ;//这里直接跳过了,应该是仿真边沿触发的原因 if(code[3:0]!=temp[3:0]) begin code = code <<4 ; code[3:0] = temp[3:0] ; end while( (k0)&&(k1)&&(k2)&&(k3)&&(k4) ) ; end end always @( en or k0 or k1 or k2 or k3 or k4 or k5) begin if(en) begin if(!k5 && !k0) begin while(!k0) ; temp<=4'b0000 ; end else if(!k5 && !k1) begin while(!k1) ; temp<=4'b0001 ; end else if(!k5 && !k2) begin while(!k2) ; temp<=4'b0010 ; end else if(!k5 && !k3) begin while(!k3) ; temp<=4'b0011 ; end else if(!k5 && !k4) begin while(!k4) ; temp<=4'b0100 ; end else if(k5 && !k0) begin while(!k0) ; temp<=4'b0101 ; end else if(k5 && !k1) begin while(!k1) ; temp<=4'b0110 ; end else if(k5 && !k2) begin while(!k2) ; temp<=4'b0111 ; end else if(k5 && !k3) begin while(!k3) ; temp<=4'b1000 ; end else if(k5 && !k4) begin while(!k4) ; temp<=4'b1001 ; end end end
展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询