首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

问个简单的程序:能实现前仿真,为什么不能后仿真呢?

问个简单的程序:能实现前仿真,为什么不能后仿真呢?

//模块功能:输入计数器初值,发送时钟的个数
// 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进行赋值啊??

但是我改不过来啊  大虾帮我想想办法
好的!!先谢谢你了
我想实现通道的脉冲发送数,先通过一路8位信号number输入需要发送的脉冲数,ddout输出脉冲的个数,当输出脉冲到达number个数时,停止发送,下一时刻再等待number数的输入,在未发送完number数之前,number保持不变;

我编了个程序 见附件;
用modelsim后仿真是错误如下:# ** Error: (vsim-SDF-3262) top_timesim.sdf(29838): Failed to find matching specify timing constraint.

麻烦高手把我看看
//模块功能:输入计数器初值,发送时钟的个数
// 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
好象不太行吧,我要求在不改变reset的情况下,当输入信号number改变情况下,输出脉冲,当脉冲输出完了以后,下一时刻,number改变是不定的,有继续发脉冲
不知道这样的功能如何实现??
number1和counter都没有清零,不然我如何实现当number改变的时候,继续发送脉冲呢,
现在我就是不知道如何实现在脉冲发送完以后,number1和counter都清零,不然没法保证下一时刻继续发送所需脉冲;
再问 能不能不使用en信号实现这个问题啊? 谢谢
number1和counter都没有清零,不然我如何实现当number改变的时候,继续发送脉冲呢,
现在我就是不知道如何实现在脉冲发送完以后,number1和counter都清零,不然没法保证下一时刻继续发送所需脉冲;
再问 能不能不使用en信号实现这个问题啊? 谢谢
返回列表