A lógica para <tmp> não coincide com um FF conhecido ...

C

caosmaker

Guest
Oi a todos ...
Eu sou novo em CPLD e Verilog.Estou trabalhando em um CPLD fazer ciclo de sinais baseado em um 50Hz e 10KHz fontes externas e controlada thrue um registo spi.

Pelo menos, eu acho, o SPI deve ser fácil, mas eu tenho um problema estranho:
Tenho feito um registo SPI, e construído como biblioteca.Se eu verificar se a sintaxe está tudo ok, mas quando eu compilo o i CPLD ter esse erro:Analisando módulo <dutyCycle> na biblioteca <work>.ERRO: XST: 899 - "dutyCycle.v line" 46: A lógica para <tmp> não corresponder a um conhecido ou FF trava modelo.
O estilo de descrição que você está usando para descrever um registo ou trava não é suportado na versão atual do software.Aqui o código:
Código:

dutyCycle (módulo

fduty entrada, / / 10KHz

fbase de entrada / 50Hz

SDI, / / Serial Data Input

input clk, / / Serial Clock

ss entrada, / / Serial Selecione

saída dever, / / Uscita Ciclo!

sdo saída / / Output de dados de série

);reg [7:0] tmp;

reg [7:0] mybyte;

reg [7:0] contador;

dutybit reg;

reg um;always @ (clk posedge ou posedge ss)

começo

if (SS)

começo

mybyte <= tmp;

fimif (clk () & & (ss == 0))

começo

tmp = (tmp [6:0], sdi);

fim

fim

atribuir sdo = tmp [7];always @ (fduty posedge)

começo

if (contador! = 100)

counter = counter 1;

diferente

dutybit = 1;

fimalways @ (fbase posedge)

começo

counter = 0;

dutybit = 0;

fimalways @ (fbase negedge)

começo

counter = 0;

dutybit = 0;

fimatribuir direito = dutybit;

endmodule

 
W świecie klawiatur oraz myszek jest nie tylko tłoczno, ale i trochę nudno. Coraz rzadziej trafiają się innowacyjne rozwiązania, które porywają serce i umysł komputerowego zapaleńca. Genius zdaje się doskonale zdawać z tego sprawę i nie próbuje sztucznie odkrywać koła na nowo. W zamian wychodzi z propozycjami bardzo rozsądnymi kosztowo, a opartymi ...

Read more...
 
Você não completamente especificados sinais como tmp, MyByte, contador e dutybit.Por exemplo, você diz o que é atribuído quando mybyte ss é alta, mas você não diz o que é atribuído quando mybyte ss é baixa.Isto também é verdade de tmp.

Você faz algo semelhante com balcão e dutybit mais tarde no código.

E como você observou, existem várias outras questões, você terá de corrigir.

rb

 
Como disse, eu sou novo em VHDL e Verilog ...
Tenho COPYed uma fonte de um "contador" de um site com muitas fontes para as peças de base.
Então, eu acho que se contador é atribuído durante a parte da oi ss, é manter o mesmo valor durante a uma baixa.Não é verdade?

No arranque, eu não me importo valores abour, porque no primeiro ciclo, todos vão para o nível certo, por isso não statrup valores atribuídos.

 
Citação:

Então, eu acho que se contador é atribuído durante a parte da oi ss, é manter o mesmo valor durante a uma baixa.
Não é verdade?
 
Eu mudei muito a minha fonte ...
Primeiro de tudo ...Agora ele é escrito em VHDL ...
...então eu tenho reduzido alguns contadores.

Código:

-------------------------------------------------- --------------------------------

- Empresa:

- Engenheiro:

--

- Data de Criação: 13:04:47 12/26/2008

- Nome do Projeto:

- Nome do Módulo: Direito - Behavioral

- Nome do Projeto:

- Target Devices:

- Versões da ferramenta:

- Descrição:

--

- Dependências:

--

- Revisão:

- Revisão 0,01 - File Criado

- Comentários adicionais:

--

-------------------------------------------------- --------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Descomente a seguinte declaração biblioteca se instanciar

---- Qualquer primitivos Xilinx neste código.

- Biblioteca UNISIM;

- utilização UNISIM.VComponents.all;direito entidade é

Porto (predefinido: em STD_LOGIC_VECTOR (3 downto 0);

addr: in STD_LOGIC;

fbase: in STD_LOGIC; - 100 Hz: para baixo, por um período curto ".
Este sinal deve ser sincronizado externamente para fduty (abaixo de 1 ciclo fduty)

fduty: in STD_LOGIC; - 100 * 32 = 3,2 KHz frequência base de ciclo.

SS: in STD_LOGIC; - Select.
Quando addr SS = '1 'e sinais programadas são válidos.

dever: out STD_LOGIC); - Ciclo de trabalho fora do sinal.
De 0 a 100%, 32 etapas.

dever final;arquitetura comportamental do imposto é

contador de sinal: std_logic_vector (3 downto 0); - contador interno

IntSet sinal: std_logic_vector (3 downto 0); - internas predefinidas, para carregar cada ciclo fbase

começo

processo (ss, addr)

begin - processo

- Carga síncrona do pré-definida na ascensão da SS (mudança de ciclo completo)

- Coloque apenas se o "endereço" (addr) sinal fraco

Se ss'event e ss = '1 'then

if addr = '1 'then

IntSet <= predefinidos;

END IF;

END IF;

end process;processo (fduty)

começo

if (fduty'event e fduty = '0 ') then

if (fbase = '0 ') then

counter <= IntSet;

diferente

if (counter = "1111"), então

dever <= '0 '; - contador de bloqueio.
OFF.

elsif (contador / = 0) then

contador <= contador - 1; - Contagem regressiva ....
-> 0

dever <= '0 ';

diferente

dever <= '1 '; - Se for zero, pare e conjunto de sinais "dever" de 1.

END IF;

END IF;

END IF;

end process;

end Behavioral;

 
<intset_0> é IntSet (0).
<intset_3> é IntSet (3).

Essas são advertências, não erros.
Quando você receber este aviso, é porque cada uso do direito de "entidade" usa "preset" valores com os bits definidos ou desmarcada, conforme o aviso.

Para o bit 0, os números são todos mesmo.
Para o bit 3, que os números são todos> 7.

 

Welcome to EDABoard.com

Sponsor

Back
Top