|

楼主 |
发表于 2015-5-7 15:42:17
|
显示全部楼层
回复 13# bpm
看了你的代码,上升沿和下降沿都可以表示成变量,就可以直接控制起始了,但是测周期的话,起始截止都是上升沿,是不是要引入新变量?初学者可能表述不清,不好意思哈~以下是我根据一段程序改的测周期,编译的时候提示cnt有错误,(Error (10133): Verilog HDL Expression error at Period.v(26): illegal part select of unpacked array "cnt"),能麻烦您帮忙看下么?
module Period(
clk,
rst_n,
signal,
percounter
);
input clk, rst_n, signal;
output signed [9:0] percounter;
reg [9:0] percounter;
reg signal_reg;
reg cnt[9:0];
wire signal_pos;
always @ ( posedge clk or negedge rst_n ) begin
if ( !rst_n ) begin
signal_reg <= 1'b0;
end
else begin
signal_reg <= signal;
end
end
assign signal_pos = signal & (~signal_reg);
always @ ( posedge clk or negedge rst_n ) begin
if ( !rst_n ) begin
cnt[9:0] <= 10'd0;
end
else if ( signal_pos == 1'b1 ) begin
cnt[9:0] <= 10'd0;
end
else begin
cnt[9:0] <= cnt[9:0] + 10'd1;
end
end
always @ ( posedge clk or negedge rst_n ) begin
if ( !rst_n ) begin
percounter[9:0] <= 10'd0;
end
else if ( signal_pos == 1'b1 ) begin
percounter[9:0] <= cnt[9:0];
end
else begin
end
end
endmodule |
|