数控分频器程序(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;
程序应该没错,仿真也成功啊,但是下到板子上,没现象。请各位高手指点; 没反应不一定是逻辑错,电路的原因也可能。 仿真没有问题。
你的硬件电路的D: IN STD_LOGIC_VECTOR(7 DOWNTO 0)如果是255的话,那FOUT就输出高电平 回2楼,我没有设255,试过很多,都不行啊。我用键盘设置的D:IN STD_LOGIC_VECTOR(7 DOWNTO 0),无论怎么设置都不行啊。 看看是不是时钟的问题,检查不用的那些引脚设置是三态还是输入。 键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。 我的代码和你的一样,可是仿真不出来,怎么回事啊 路过!。。。。
页:
[1]