微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求助:一个简单的verilog程序,不过仿真和理论值不符

求助:一个简单的verilog程序,不过仿真和理论值不符

时间:10-02 整理:3721RD 点击:
FPGA 时钟频率50MHz
要实现的功能描述如下:  写一路脉冲,以clk_50M下降沿触发,从零计数到280为低电平,然后从281-285(5个时钟脉冲)为高电平,然后从286-330(45个时钟脉冲)为低电平,接着计数5个时钟脉冲为高电平,接着45个时钟脉冲为低电平,也就是说,这路脉冲在计数281次后,为一个占空比为1:10的(周期为1000ns)的脉冲:
所写程序如下:

  1. module(clk_50M,rst_n,count1,SP)
  2. input clk_50M,rst_n;
  3. output reg [8:0] count1;
  4. output SP;
  5. reg SP;
  6. always @(negedge clk_50M or negedge rst_n)
  7. begin
  8.            if(!rst_n)
  9.               count1 9'd285)
  10.                 begin
  11.                     SP 9'd330)
  12.                          count1 9'd285)
                    begin
                        SP 9'd285)
                    begin
                        SP 9'd330)
                             count1 =0 && count2 =281 && count2 =286 && count2 =281 && count2 =0 && count2 9'd285)改为else if(ount1>9'd285 &&ount1<=9'd330)
    if else else语句能不能执行多个分支,条件满足只执行一个
    建议设置标志位,即计数到280,设置标志位=1,不过要加一个计数寄存器count2判断标志位成立来完成占空比,这样两个always就可以模块化

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top