这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 求教高手:

共3条 1/1 1 跳转至

求教高手:

菜鸟
2007-12-25 22:25:33     打赏

我弄得一个计数器,是求一个脉冲信号的频率,我想在一定时间内计数脉冲的上升沿个数,求得频率。时钟信号4MHZ,DDLIN为输入脉冲信号。用的CPLD EPM7128STC100-10. 可为什么在地址“203”和“204”处,总是输出00呢?希望高手赐教:
    count[15..0]    :           dff     ;
    countstate[1..0]:           dff     ;
    countb_ena      :           NODE    ;
    operate_status  :           NODE    ;
CASE SA[9..0] IS
 WHEN H"203" =>
   FOR I IN 0 TO 7 GENERATE
   OUTBUF[I]=count[I];
   END GENERATE;
        WHEN H"204" =>
   FOR I IN 0 TO 7 GENERATE
   OUTBUF[I]=count[I+8];
   END GENERATE;
        WHEN OTHERS =>
   FOR I IN 0 TO 7 GENERATE
   OUTBUF[I]=OUTBUF[I];
   END GENERATE;
     END CASE;

 FOR I IN 0 TO 7 GENERATE
  SD[I]=TRI(OUTBUF[I],(SA[9..4]==H"20") & !SIOR);
 END GENERATE;

    (,CLK_1M,,)            = freqdiv(GND,CLK, VCC);
 (,,,CLK_250K)       = freqdiv(GND,CLK, VCC);
 (,,,CLK_15K)       = freqdiv(GND,CLK_250K, VCC);
 (,,,CLK_1K)        = freqdiv(GND,CLK_15K, VCC);
 (,,,CLK_16MS)       = freqdiv(GND,CLK_1K, VCC);
countstate[].clk  =  CLK_16MS;
    countstate[].CLRN =  ((SA[9..0]==H"203")#(SA[9..0]==H"204")&!SIOW&!AEN);
    count[].clk       =  DDLIN;
    count[].CLRN      =  ((SA[9..0]==H"203")#(SA[9..0]==H"204")&!SIOW&!AEN);
--状态转移表
 TABLE
 countstate[].q      =>      countstate[].d , operate_status ;
 B"00"                    =>            B"01"          ,    0    ;   
 B"01"                    =>            B"11"          ,    0    ;    
 B"11"                    =>            B"10"          ,    0    ;    
 B"10"                    =>            B"10"          ,    0    ;    
 END  TABLE;
--状态转移表
--计数器状态控制
 CASE countstate[] IS
        WHEN B"00"   =>   
            countb_ena = GND;
        WHEN B"01"   =>  
            countb_ena = GND;
        WHEN B"11"   =>   
            countb_ena = VCC;
        WHEN B"10"   =>  
            countb_ena = GND;     
 END CASE;
--计数器状态控制
     --计数器开始结束控制
 IF countb_ena THEN
       count[].d   =   count[].q + 1;
 ELSE
        count[].d   =   count[].q;
 END IF;
 ---计数器开始结束控制
END;




关键词: 求教     高手    

工程师
2007-12-29 16:27:57     打赏
2楼
防真过还是实际跑的时候有错误!??

菜鸟
2007-12-30 22:08:30     打赏
3楼

叮叮当当,谢谢你了,是我猪头了,少打了一组括号……逻辑的问题。现在解决了


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]