问个简单的程序:能实现前仿真,为什么不能后仿真呢?
- UID
- 132801
- 性别
- 男
|
问个简单的程序:能实现前仿真,为什么不能后仿真呢?
//模块功能:输入计数器初值,发送时钟的个数 // number:时钟的 个数 // dout:发送时钟
module test (clk,reset,number,ddout); input clk; input reset; input [7:0] number; output ddout; reg [7:0] counter; //定义个计数器 counter1 reg ddout; reg [7:0] number1; always @(negedge clk or negedge reset) //计数器计数 if(!reset) counter=0; else begin if(counter<number1) counter=counter+1; else counter=0; end
always @( clk or reset) //输出脉冲
if(!reset) begin ddout=0; number1=0; end else if(counter<number1) begin ddout=clk; end else begin ddout=0; number1=0; end always @(number) //将计数的初值赋值给number1 number1=number;
endmodule
是不是 在不同的always里面对number1进行赋值啊?? |
|
|
|
|
|
- UID
- 132801
- 性别
- 男
|
|
|
|
|
|
- UID
- 132801
- 性别
- 男
|
好的!!先谢谢你了
我想实现通道的脉冲发送数,先通过一路8位信号number输入需要发送的脉冲数,ddout输出脉冲的个数,当输出脉冲到达number个数时,停止发送,下一时刻再等待number数的输入,在未发送完number数之前,number保持不变;
我编了个程序 见附件;
用modelsim后仿真是错误如下:# ** Error: (vsim-SDF-3262) top_timesim.sdf(29838): Failed to find matching specify timing constraint.
麻烦高手把我看看 |
|
|
|
|
|
- UID
- 132801
- 性别
- 男
|
//模块功能:输入计数器初值,发送时钟的个数
// number:时钟的 个数
// dout:发送时钟
module test1 (clk,reset,number,ddout,en);
input clk;
input reset;
input en;
input [7:0] number; //输入需要发送脉冲的个数
output ddout;
reg [7:0] counter; //定义个计数器 counter1
wire ddout;
reg [7:0] number1;
always @(negedge clk or negedge reset) //计数器计数
if(!reset)
counter<=0;
else
begin
if(counter
counter<=counter+1;
else
counter<=0;
end
assign ddout=(!reset)?(0)(counter
always @(negedge clk or negedge reset or posedge en)
if(!reset)
number1<=8'b0;
else if(en)
number1<=number;
else if(counter>=number1)
begin
number1<=0;
end
endmodule |
|
|
|
|
|
- UID
- 132801
- 性别
- 男
|
好象不太行吧,我要求在不改变reset的情况下,当输入信号number改变情况下,输出脉冲,当脉冲输出完了以后,下一时刻,number改变是不定的,有继续发脉冲
不知道这样的功能如何实现?? |
|
|
|
|
|
- UID
- 132801
- 性别
- 男
|
number1和counter都没有清零,不然我如何实现当number改变的时候,继续发送脉冲呢,
现在我就是不知道如何实现在脉冲发送完以后,number1和counter都清零,不然没法保证下一时刻继续发送所需脉冲;
再问 能不能不使用en信号实现这个问题啊? 谢谢 |
|
|
|
|
|
- UID
- 132801
- 性别
- 男
|
number1和counter都没有清零,不然我如何实现当number改变的时候,继续发送脉冲呢,
现在我就是不知道如何实现在脉冲发送完以后,number1和counter都清零,不然没法保证下一时刻继续发送所需脉冲;
再问 能不能不使用en信号实现这个问题啊? 谢谢 |
|
|
|
|
|