input [3:0] A,B,C,D
output Y
wire [7:0] X
reg Y
assign X={A,3'b0}+{B,2'b0}+{C,1'b0}+D
always @(X)
begin
if ((X>8'h4)&&(X<=8'hf))
Y=1'b1
else
Y=1'b0
end
endmodule
该程序经过仿真,结果正确。
1module sig2component(clk, rst_n, din, dout)
inputclk
inputrst_n
input [7:0]din
output [7:0] dout
always @ (posedge clk or negedge rst_n)
if (!rst_n)
dout <= 0
else if (din[7]) begin
dout[6:0] <= ~din[6:0] + 7'd1
dout[7] <= din[7]
end
else
dout <= din
endmodule
2
module compare(clk, rst_n, din, flag_out)
input clk, rst_n
input [3:0]din
output flag_out
always @ (posedge clk or negedge rst_n)
if (!rst_n)
flag_out <= 0
else if (din >4'd4)
flag_out <= 1'b1
else
flag_out <= 1'b0
period是ck的周期,在这之前肯定有对period定义如`define period 20
或者
parameter period=20;
#(period) 是过一个20时间单位执行forever中的语句
#(period/2) 指经过10时间单位 将ck取反,这样就会得到时钟
加括号和不加括号没区别,只是价格括号可以清楚看清层次
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)