tianxingjian 发表于 2008-8-30 23:06:01

数控分频器程序(VHDL)仿真成功,但下到板子里好像没反应,请各位大侠帮忙

LIBRARY IEEE;
        USE IEEE.STD_LOGIC_1164.ALL;
        USE IEEE.STD_LOGIC_UNSIGNED.ALL;
        ENTITY DVF IS
          PORT (   CLK: IN STD_LOGIC;
                       D: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
                   FOUT : OUT STD_LOGIC);
        END;
        ARCHITECTURE one OF DVF IS
          SIGNAL   FULL : STD_LOGIC;
        BEGIN
          P_REG: PROCESS(CLK)
           VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);
           BEGIN         
              IF CLK'EVENT AND CLK = '1' THEN
                    IF CNT8 = "11111111" THEN   
                    CNT8 := D;      --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8   
                      FULL <= '1'; --同时使溢出标志信号FULL输出为高电平               
                      ELSE   CNT8 := CNT8 + 1;--否则继续作加1计数
                                FULL <= '0';      --且输出溢出标志信号FULL为低电平      
                    END IF;
              END IF;
          END PROCESS P_REG ;
           P_DIV: PROCESS(FULL)
             VARIABLE CNT2 : STD_LOGIC;
           BEGIN
           IF FULL'EVENT AND FULL = '1' THEN
             CNT2 := NOT CNT2; --如果溢出标志信号FULL为高电平,D触发器输出取反
                 IF CNT2 = '1' THENFOUT <= '1'; ELSE FOUT <= '0';
                END IF;
           END IF;
          END PROCESS P_DIV ;
END;
程序应该没错,仿真也成功啊,但是下到板子上,没现象。请各位高手指点;

holycat 发表于 2008-8-31 00:51:15

没反应不一定是逻辑错,电路的原因也可能。

RayXP 发表于 2008-8-31 01:06:02

仿真没有问题。
你的硬件电路的D: IN STD_LOGIC_VECTOR(7 DOWNTO 0)如果是255的话,那FOUT就输出高电平

tianxingjian 发表于 2008-8-31 21:15:22

回2楼,我没有设255,试过很多,都不行啊。我用键盘设置的D:IN STD_LOGIC_VECTOR(7 DOWNTO 0),无论怎么设置都不行啊。

lingkzc 发表于 2008-9-2 08:54:04

看看是不是时钟的问题,检查不用的那些引脚设置是三态还是输入。

loveghb 发表于 2009-2-24 11:08:54

键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。

x411001 发表于 2010-6-5 09:39:05

我的代码和你的一样,可是仿真不出来,怎么回事啊

w514640 发表于 2012-4-23 17:00:14

路过!。。。。
页: [1]
查看完整版本: 数控分频器程序(VHDL)仿真成功,但下到板子里好像没反应,请各位大侠帮忙