Página 1 de 2

Controle ângulo de fase

MensagemEnviado: 23 Jun 2016 20:17
por Red Neck Guy
Eu comecei agora, falta refinar:

Código: Selecionar todos
 library ieee;
 use ieee.std_logic_1164.all;
 use ieee.std_logic_unsigned.all;
 
 
 entity ControladorAnguloFase is
   generic(
      MAX_COUNT : integer := 65535
   );
   port(
      data_bus : in std_logic_vector(15 downto 0);
      wr       : in std_logic;
      handshack: out std_logic;
      sinc     : in std_logic;
      clock    : in std_logic;
      gate     : out std_logic
   );
end entity;


architecture Behavior of ControladorAnguloFase is
  signal data_register : std_logic_vector(15 downto 0);
  signal data_register_buffer: std_logic_vector(15 downto 0);
  signal counter       : std_logic_vector(15 downto 0);
begin

-- Processo para leitura dos dados
-- de configuração
amostra_clock:
   process(clock,data_bus,wr) begin
   
     if(rising_edge(clock) and wr='0') then
       handshack <= '0';
       data_register_buffer <= data_bus;
     else
       handshack <= '1';
     end if;
   
   end process;
   
controle_gate:
   process(clock,sinc) begin
   
     if(rising_edge(clock)) then
    
       if(sinc='1') then
         counter(15 downto 0) <= (others => '0');
         gate <= '0';
         data_register(15 downto 0) <= data_register_buffer(15 downto 0);
       else
         counter <= counter + 1;      
       end if;
      
       if(counter = data_register)then
         gate <= '1';
       end if;
    
     end if;
   
   
   end process;   
   
end architecture;


Imagem

Re: Controle ângulo de fase

MensagemEnviado: 23 Jun 2016 20:33
por Red Neck Guy
RTL:

Imagem

Re: Controle ângulo de fase

MensagemEnviado: 24 Jun 2016 07:22
por Rodrigo_P_A
Eu brinquei um pouco com FPGA e CPLD, mas nunca tive aplicação comercial para este tipo de produto.

Re: Controle ângulo de fase

MensagemEnviado: 24 Jun 2016 08:39
por Red Neck Guy
Eu estou estudando ainda, mas me parece que utilizar o NIOS II é o caminho das pedras.

Re: Controle ângulo de fase

MensagemEnviado: 24 Jun 2016 09:46
por Rodrigo_P_A
Eu acho interessante, mas acho que a aplicação tem que ser bem específica para implementar uma FPGA, elas são caras ainda se comparada com um uC ,e um uC é mais fácil de usar.

Re: Controle ângulo de fase

MensagemEnviado: 24 Jun 2016 10:23
por Red Neck Guy
Mas digamos assim: Uma placa onde você colocaria um LPC4357, daria pra trocar por um EP4C com 30k elementos lógicos. Nele você implementaria o NIOS 2, no espaço que sobra você poderia implementar todo o teu hardware e deixá-lo mapeado na RAM.
No meu caso: Dois controladores de ângulo de fase, um controlador de temperatura(por luxo), e uma máquina de estados que gerencia os meios de pagamento no protocolo MDB.

Re: Controle ângulo de fase

MensagemEnviado: 24 Jun 2016 10:41
por Rodrigo_P_A
Aquino escreveu:Mas digamos assim: Uma placa onde você colocaria um LPC4357, daria pra trocar por um EP4C com 30k elementos lógicos. Nele você implementaria o NIOS 2, no espaço que sobra você poderia implementar todo o teu hardware e deixá-lo mapeado na RAM.
No meu caso: Dois controladores de ângulo de fase, um controlador de temperatura(por luxo), e uma máquina de estados que gerencia os meios de pagamento no protocolo MDB.


Eu num evolui tanto hehe, quanto eu teria de RAM por exemplo nesta EPC4 com 30K de elementos usando o NIOS2?

Re: Controle ângulo de fase

MensagemEnviado: 24 Jun 2016 12:44
por andre_luis
E o bacana do NiosII é que dá pra criar seus proprios modulos de hardware e os colar nos projetos como os demais elementos prontos do Qsys. Nunca fiz isso, mas podia tentar fazer isso com o seu controle de fazer.

Re: Controle ângulo de fase

MensagemEnviado: 26 Jun 2016 15:18
por Rodrigo_P_A
Bom, lendo isso aqui: http://opencores.org/project,neo430 deu para eu ter uma idéia de quanto espaço ocupa um softprocessor em uma FPGA. No futuro vou brincar mais com isso, acho que o preço tende a cair cada vez mais.

Realmente é bem flexível, mas ainda acho que vale mais para aplicações bem específicas.

Re: Controle ângulo de fase

MensagemEnviado: 28 Jun 2016 13:01
por msamsoniuk
acho que depende da aplicacao... eu particularmente acho dificil viver sem logica programavel: ateh dah para fazer bastante coisa com glue-logic 74xx, mas uma simples CPLD jah ajuda bastante! alem do espaco que economiza, custa preco de banana: a mais barata na digikey eh uma CPLD da lattice com 40 elementos logicos e 64 pinos, por 90 centavos de dolar. e daih as opcoes sao varias, com muitos encapsulamentos acessiveis e densidades variadas. claro, a medida que aumenta o tamanho, aumenta o preco, CPLDs quebram um galho para logicas pequenas, para logicas maiores, uma FPGA eh melhor. e se vc procurar por FPGAs na digikey, a mais barata tambem eh uma FPGA da lattice, mas com generosos 640 elementos logicos e 16 pinos por 1.30 USD. o problema eh que eh um BGAzinho... a menor opcao nao-BGA e nao-QFN eh uma FPGA da lattice com 1280 elementos logicos, 64kbit de ram e 100 pinos (LQFP) por 4.95 USD. segundo o datasheet, essas FPGAs tem uma memoria de configuracao nao-volatil programavel via SPI. alternativamente, pode ser programada a partir de uma memoria SPI ou programada via SPI, a partir de um microcontrolador. se vale a pena? depende da aplicacao:

- se a aplicacao for simples, muito provavelmente um microcontrolador simples dah conta, sendo mais simples e mais barato de usar.
- se a aplicacao for complexa, muito provavelmente um processador potente dah conta, sendo mais simples e mais barato de usar.

parece um paradoxo neh? pois eh... tem que pensar bem: um microcontrolador mais simples jah tem toda uma plataforma de desenvolvimento, tem um custo baixo e tem um monte de perifericos de todo tipo, eh soh procurar bem. embora existam FPGAs baratas, o volume de logica disponivel nao permite bater um microcontrolador tipico, precisando de uma FPGA com mais recursos, o que custa mais caro. por outro lado, no caso de aplicacoes mais complexas, muito provavelmente um processador mais potente vai ser uma melhor opcao, pq tb jah tem toda uma plataforma de desenvolvimento, tem um custo baixo e tem um monte de perifericos maneiros de todo tipo, daqueles que vc nunca vai conseguir escrever com facilidade usando uma FPGA. ok, entao em que caso se utilizaria uma FPGA? como falei, eh dificil viver sem logica programavel: se eu procurar por aqui nos sistemas que eu trabalho, tem uma FPGA em 9 de cada 10 placas. mas tambem tem um processador em 8 de cada 10 placas. e em 7 de cada 10 placas, o processador nao depende da FPGA para bootar, mas o sistema como um todo provavelmente depende da FPGA funcionando, ou seja, a FPGA eh um periferico muito importante. e se vc sair abrindo caixas por aih, eh um cenario bem tipico.

nao eh dificil entender se tiver alguns exemplos de caso... por exemplo, digamos que hipoteticamente vc trabalha na cisco e querem redesenhar uma interface WIC. eh uma interface obsoleta, mas digamos que tem clientes que ainda compram. existe nela um componente muito interessante que eh o 68LC302: ele possui um core 68000 de 32 bits, endereca alguns megabytes de memoria e possui alguns perifericos interessantes, como UARTs e controladores HDLC capazes de operar a 2Mbps, com um encapsulamento simples LQFP de 100 pinos. o componente eh bom, mas estah ficando caro (31 USD), pode descontinuar a qualquer momento e vc quer ter uma solucao para garantir o fornecimento para alguns clientes chave no terceiro mundo. colocar um ARM novo? nem pensar... alem de ter que reescrever o software todo, nao teria uma solucao confiavel para o HDLC... a solucao simples seria apelar para uma FPGA, ao menos eh o que o seu chefe diria: nao tem uma FPGA compativel pino a pino que de para trocar direto? infelizmente a resposta eh nao. uma FPGA capaz de hospedar um core 68000 de 32 bits requer uns 300 mil gates, custa 23 USD e vem com um encapsulamento BGA256. se for considerar o redesign da PCB com mais layers para acomodar o BGA, pode ficar caro demais. lembra-se: seu chefe eh americano! se for para ficar caro, melhor descontinuar o produto e perder o cliente. mas dah para melhorar isso: vc pode optar por um 68SEC000 de 10 USD, que eh o proprio core em um encapsulamento QFP-64 e uma FPGA de 5 USD com encapsulamento LQPF-100. o preco vai cair praticamente pela metade, a compatibilidade com o core original eh perfeita e nao vai precisar usar encapsulamentos muito mais complexos. em relacao ao chip original, vc tem uma solucao de 2 chips ao inves de 1... eventualmente, se no produto original tinha uma CPLD ou alguma glue-logic (sempre tem), vc consegue acomodar tudo no mesmo espaco sem aumentar o custo da PCB. o exemplo eh bem realista: acho que 8 entre 10 projetos em que vi FPGAs sendo utilizadas foram para substituir algo que jah existia antes (ASIC, DSP, CPLD, FPGA, glue-logic, etc). eventualmente, um e outro projeto com processador embarcado, mas bem raro. via regra, eh mais para substituir ASICs antigos e caros, do contrario nao eh muito competitivo.

em resumo: FPGAs tem que competir com tudo que eh tipo de coisa: ASIC, DSP, CPLD, glue-logic, microcontrolador, processador, periferico, etc. para valer a pena, tem que ser mais barato e/ou pratico, do contrario eh obvio que nao vale a pena. e quanto a bater algo que nao existe? eh mais raro ainda eh algo comecar em cima de uma FPGA, mas existe. acho que a unica aplicacao realmente inedita que eu jah vi surgir em FPGA sao interfaces ethernet de 100GbE e 400GbE: neste caso, nao existe realmente ASIC de onde copiar, o que significa que eh uma aplicacao onde nao existe limite de preco: o cliente quer, o cliente paga o quanto for necessario. um dia, vao surgir ASICs que fazem isso de forma mais barata, mas agora nao existem ainda.

tem sempre que lembrar: FPGA eh um ASIC programavel e essa flexibilidade tem um custo: existe um overhead triplo no chip: logica basica, logica de roteamento e programabilidade. se vc tem um ASIC de 70 mil gates (processador 68SEC000, por exemplo), vc vai gastar uns 70 mil gates para ter ele na FPGA, mais uns 70 mil gates para fazer o roteamento (e isso eh uma exigencia intrinsica da FPGA), totalizando uns 140 mil gates. em cima disso, vc vai ter programabilidade de tudo, o que implica em outros quase 140 mil gates, o que totaliza quase 300 mil gates. se desse para pegar o ASIC de 70 mil gates e colocar em uma FPGA de 70 mil gates, seria realmente mais barato, mas devido ao overhead, vc tem que pensar em 280 mil gates. e daih fica caro. tem como fazer? provavelmente sim! em uma FPGA de 50 mil gates que custa metade de um 68SEC000, eu consigo colocar dois processadores rodando com 4x o clock dele. isso representa um ganho de 8x na performance com 50% do custo. mas entao pq nao serve? pq nao eh compativel com o processador antigo. as coisas tem uma densidade de custo: eu posso economizar uma fortuna usando uma FPGA, mas o impacto eh gastar uma fortuna reescrevendo software.

eu tenho uma teoria sobre densidade computacional: um problema pode ser escrito de diversas formas, seja software, seja hardware, seja temporal, seja espacial... existem formas mais adequadas e menos adequadas, mas quase sempre problemas medios do mundo real podem ser escritos de diversas formas e acabam custando quase a mesma coisa. ou seja, se vc economizar no hardware, eh bem provavel que gaste mais no software e vice-versa. como no caso que citei do 68LC302 da WIC: a maior economia, em geral, nao ocorre com uma solucao extrema, mas sim com uma solucao equilibrada.

Re: Controle ângulo de fase

MensagemEnviado: 28 Jun 2016 15:09
por eletroinf
Com tantas qualidades interessantes, tu teria alguma ideia se um FPGA ou CPLD se sairia bem para executar o RLS?

Na codificação em C, fiz uma contagem aqui, são umas 370 multiplicações para um sistema de terceira ordem (a matriz P é 6x6).

Como comentei em outro post, um STM32F407 leva cerca de 185 us para fazer uma iteração. Cálculos em float, talvez seja viável usar uma transformada delta ou algo do gênero para usar integer.

Thank you

Re: Controle ângulo de fase

MensagemEnviado: 28 Jun 2016 15:23
por andre_luis
Talvez isso dê uma luz ( familia Stratix da Altera ):

Cordic.png
https://www.altera.com/content/dam/alte ... wp_qrd.pdf

Re: Controle ângulo de fase

MensagemEnviado: 28 Jun 2016 17:08
por eletroinf
Gracias!
Achei este aqui também:
https://researchspace.auckland.ac.nz/bi ... sequence=3

Parece que eles fizeram o float no braço, mas não examinei bem ainda.

Re: Controle ângulo de fase

MensagemEnviado: 28 Jun 2016 18:29
por Rodrigo_P_A
Pois é Marcelo, atualmente, com o que eu trabalho, FPGA não serve para mim, não trabalho com coisas tão específicas, e os microcontroladoras básicos me atendem, é o que eu imaginava mesmo, se for implementar tudo que tem em certos uCs, fica muito mais complexo e caro, você acha que o preço de FPGA vai cair mais ainda no futuro?

E com a compra da ALTERA pela INTEL, o que você acha que vai mudar?

Re: Controle ângulo de fase

MensagemEnviado: 29 Jun 2016 02:32
por msamsoniuk
francamente, nao tenho ideia... depois da compra da altera pela intel, eu nao ando duvidando de mais nada. nitidamente, a compra foi uma forte reacao da intel ao fato da xilinx e altera estarem tentando entrar em seus dominios.

tradicionalmente, a intel sempre levou um pau da motorola: os texanos malditos chegaram do nada, sentaram lah no topo da piramide e ficaram decadas e decadas zombando da intel. em sua ultima reencarnacao, a freescale ofereceu um powerpc de 24 cores, 2x10G ethernet, 12x1G ethernet e uma infinidade de perifericos maneiros, somando uma capacidade de processamento de pacotes da ordem de 40 milhoes de pacotes/s. mas a freescale acumulou muitos problema e, um dia, chegou ao fundo do poco. acabou sendo vendida e parece que powerpc nao eh muito a praia da nxp... o fato eh que com os malditos texanos fora da jogada, a intel pela primeira vez na historia chegou lah no topo primeiro e lancou um xeon com capacidade para 80 milhoes de pacotes/s. tem que pensar no impacto disso: ateh uns anos atras, quando vc ia em um datacenter e comecava a puxar placas, a probabilidade de encontrar um powerpc era grande, pq powerpc era sinonimo de network processor. dependendo do caso, vc tinha placas de meio milhao de dolares e, ali no canto, tinha um powerpc. francamente, nao sei se a freescale faturava grande coisa fabricando apenas o processador, mas o fato eh que a reputacao por estar naquele circulo fechado lah no apice da tecnologia era algo que eles tinham e a intel nao. quando a intel deixou o powerpc, finalmente, para tras, houve todo um efeito cascata: o xeon comecou a pipocar em datacenters em funcoes mais nobres do que meros servidores de baixo custo e eu vi pipocar placas com intel para uso militar para todo lado, mercado que ateh uns anos atras era monopolio de powerpcs. eh um efeito cascata: se um cara como a cisco comeca a usar intel, eh pq deve ser seguro usar em um carro blindado. o proximo passo deles eh entrar no setor aeroespacial, onde versoes a prova de radiacao do powerpc dominam atualmente. com os pequenos ARMs pipocando por todo lado, a intel tem que fugir para lucrativos segmentos high-end.

mas daih, quando eles estao lah felizes e se preparando para colher o bonus da vitoria, eles descobrem que o buraco eh mais embaixo: a xilinx e altera oferecem FPGAs capazes de trabalhar com interfaces de 100 e 400G ethernet, processando zilhoes de pacotes/s. e pior, descobre clientes felizes ignorando seus xeons e usando FPGAs com core ARM, sem falar no bom relacionamento da xilinx com os militares americanos e nas FPGAs a prova de radiacao pipocando em tudo quanto eh satelite por aih... seria um belo banho de agua fria nos planos da intel? eu fico imaginando a conversa na reuniao do conselho administrativo da intel: "aqueles malditos insetos! vamos matar um deles a luz do dia para dar o exemplo e o outro vamos matar as escondidas, de forma lenta e dolorosa! nos temos a tecnologia, nos temos o dinheiro, nos podemos faze-lo!"... para mim a compra da altera tem um objetivo nitido: matar a altera. de forma discreta, claro, mas nao se enganem: a estrategia comeca com a oferta de uma FPGA com xeon, com precos agressivos para que os clientes esquecam das FPGAs com ARM. a xilinx pode ateh tentar lutar, mas a altera jah esta morta nessa batalha e vai ecoar como exemplo para a xilinx pensar duas vezes... e depois de matar o ARM e fazer uma limpa dos maiores clientes da altera, resta vender os clientes menores e pouco interessantes para uma lattice ou microchip da vida. ao mesmo tempo em que a altera sangra e colapsa, a intel vai ir com tudo contra a xilinx! e daih depende da xilinx: bater de frente, tentando marketar suas FPGAs com ARMs integrados e interfaces de alta performance, ou se esconder nas montanhas e tentar viver das migalhas dos pequenos clientes.

alguns falam em uma possivel venda da xilinx... mas para quem? eu francamente nao vejo isso com uma perspectiva muito boa... fora as duas grandes (altera e xilinx), soh existem opcoes pequenas: lattice, actel, achronix, etc.

Rodrigo_P_A escreveu:Pois é Marcelo, atualmente, com o que eu trabalho, FPGA não serve para mim, não trabalho com coisas tão específicas, e os microcontroladoras básicos me atendem, é o que eu imaginava mesmo, se for implementar tudo que tem em certos uCs, fica muito mais complexo e caro, você acha que o preço de FPGA vai cair mais ainda no futuro?

E com a compra da ALTERA pela INTEL, o que você acha que vai mudar?