PTC2528 Laboratório de Comunicações: Projeto de Formatura. Orientador Prof. Dr. Cristiano Magalhães Panazio
|
|
- Danilo Felgueiras de Andrade
- 8 Há anos
- Visualizações:
Transcrição
1 PTC2528 Laboratório de Comunicações: Projeto de Formatura Receptor SIC Successive Interference Cancellation Cancelamento Sucessivo das Interferências Orientador Prof. Dr. Cristiano Magalhães Panazio Vinicius Pavanelli Vianna de dezembro de 2011
2
3 Sumário 1 Implementação de um detector SIC em FPGA 1 2 Descrição CDMA 1 3 Descrição SIC 1 4 Desempenho 2 5 Códigos MATLAB dsss.m dsss_sic.m do_sic.m walsh.m Implementação em lógica digital (FPGA) Geração do ruído AWGN Códigos VHDL do projeto atrasa64.vhd Codificador.vhd Compensador.vhd ControlaBuffer.vhd debounce.vhd DecodificadorSIC.vhd DecodificadorSoft.vhd GanhoUsuario.vhd LCD.vhd LFSR.vhd nibble2hex.vhd Placa.vhd ProvaAtrasoSoft.vhd ProvaSIC.vhd SomaCanal.vhd TF.vhd Teste Benches VHDL Scripts de testes VHDL tb_codificador.vhd tb_placa.vhd tb_provaatrasosoft.vhd tb_provasic.vhd i
4
5 1 Implementação de um detector SIC em FPGA O projeto consistirá na geração de múltiplos usuários, cada qual com a sua sequência de espalhamento, e da superamostragem do sinal para transmissão num canal AWGN. Cada usuário terá ganho e atrasos específicos. O sinal resultante será aplicado a um detector SIC para realizadação da decodificação. A implementação se dará numa placa FPGA. Em um primeiro estágio o canal com os usuários espalhados e o ruído será gerado internamente por um barramento lógico da FPGA, sendo ligado com o receptor SIC, junto com as informações do ganho dos usuários e seus atrasos. As informações da simulação, como probabilidade de erro encontrada, será informada por meio do visor LED da placa de desenvolvimento FPGA. Se for possível será feita uma interface por meio do barramento USB ou via saída VGA para um monitor diretamente, isso se for possível construir ou utilizar uma biblioteca fácil de caracteres e controle VGA para a FPGA. Um cenário altamente otimista para o projeto seria a construção do receptor CDMA inteiro para utilização do SIC, porém isto envolve uma complexidade maior do que o projeto, como sincronismos de amostragem e equalização do canal de audio da placa FPGA. 2 Descrição CDMA Um sistema CDMA é um sistema multiplexado por códigos onde cada usuário tem sua sequência de dados multiplicada por um código de espalhamento espectral composto por vários chips, o canal teórico de um sistema CDMA é composto da soma destes usuários mais um eventual ruído branco que pode ser somado (não mostrado na figura 1). Se os dois códigos utilizados forem ortogonais não se tem sobreposição dos dois usuários, eliminando assim as interferências entre usuários e podendo ser idealizado um receptor como o da figura 2. Figura 1: Diagrama de blocos básico de um receptor CDMA 3 Descrição SIC Como na realidade se tem usuários com potências diferentes e em distâncias diferentes, os dados destes usuários espalhados não chegarão ao receptor em sincronia, existirá um eventual atraso entre os usuários e uma eventual diferença de potência. Para lidar com esta interferência entre usuários pode ser utilizado um receptor SIC, que irá decodificar os usuários em ordem decrescente de potência, eliminando-os sucessivamente do canal, teoricamente eliminando qualquer sinal gerado por estes usuários na decodificação dos usuários subsequentes. No caso da figura 3 temos uma realização conceitual, aonde temos dois usuários no sistema e primeiros decodificamos o usuário 1 para então retirar seu código do canal antes de decodificar os dados do usuário 2. Temos neste caso duas situação importantes: 1
6 O usuário 1 ter maior potência que o usuário 2. Com isto a probabilidade de se ter acertado na decodificação do usuário 1 é alta e provavelmente teremos retirado do canal a sequência que este usuário colocou, reduzindo a interferência no usuário 2. O usuário 1 ter menor potência que o usuário 2. Com isto a probabilidade de se ter errado na decodificação do usuário 1 é alta e provavelmente teremos acrescentado no canal uma nova sequência, aumentando a interferência no usuário 2. Figura 2: Diagrama de blocos básico de um receptor SIC Por estas razões parte da implementação real de um receptor SIC é a classificação dos usuários pela sua potência, garantindo que estaremos retirando a interferência do canal e não introduzindo mais interferência no canal. Esta é uma das maiores dificuldades da implementação deste receptor em um cenário real, tornando-o muito complexo computacionalmente. 4 Desempenho Na figura 4 temos os resultados da simulação computacional feita no MATLAB de um receptor SIC e de um receptor comum, no eixo horizontal temos a relação sinal/ruído, em db, e no eixo vertical temos a probabilidade de erro, em escala logaritmica. Pode-se ver que o receptor SIC é vantajoso quando se tem uma relação sinal/ruído maior, como por exemplo acima de 10dB, para níveis menores o efeito da interferência entre usuários começa a se comparar com o ruído de fundo do canal. Para níveis de sinal/ruído acima de 12dB existe um ganho aproximado de 3dB ao se utilizar o SIC, ou seja, um sinal de 9dB com SIC gera o mesmo desempenho que um sinal de 12dB com um receptor normal. 2
7 Figura 3: Simulações da taxa de erro recebida (BER) em relação ao nível de ruído do sinal, utilizando 4 usuários no canal com pesos diferentes, de modo a otimizar a resposta do sistema SIC 5 Códigos MATLAB Para realizar esta simulação foram construídos os seguintes códigos MATLAB: dsss.m Realiza o espalhamento espectral e o posterior desespalhamento espectral utilizando o modelo do receptor normal. dsss_sic.m Realiza o desespalhamento espectral, utilizando o mesmo canal exportado pela função dsss.m, com o modelo do receptor SIC. do_sic.m Script que chama as duas funções acima, gera as matrizes com os resultados das simulações e plota um gráfico como o apresentado na figura 4. walsh.m Função que gera os códigos Walsh-Hadamard para o espalhamento espectral. Aonde possível foram utilizadas matrizes dentro do MATLAB, com as funções reshape e repmat foi possível, a partir de uma matriz I de informações, gerar uma matriz I contendo 8 réplicas de cada bit dentro de I, multiplicando esta matriz por uma matriz que contenha quantas réplicas forem necessária do código temos a saída espalhada do sinal. Depois reformatando esta matriz, utilizando a função reshape, foi possível colocar esta matriz com um bit de informação por linha, contendo em cada linha vários chips correspondentes deste bit espalhado, um por coluna. Então fazendo o produto interno desta matriz com os códigos, somando as linhas e comparando com 0 podemos achar a decodificação dos dados dos usuários. Este processo parece complicado e a princípio exigir muita memória por criar matrizes grandes, mas se mostrou bem rápido nas simulações feitas. 3
8 5.1 dsss.m dsss.m 1 function [O,Canal] = dsss(i,usuarios, super, Rc, snr,delay) 2 global H; 3 global Canal; 4 bits = size(i,2); % numero de bits é o número de colunas de I 5 Canal = zeros (1,bits*Rc*super); 6 O = zeros (usuarios,bits); 7 H = walsh(rc); 8 H = reshape(repmat(h,1,super), Rc, super*rc); 9 10 Canal = zeros (1,bits*Rc*super+max(delay)); 11 Espalhado = zeros (usuarios,bits*rc*super+max(delay)); % No loop abaixo: 14 % tmp contem a matriz com os dados repetidos, uma coluna por eventual chip 15 % repmat(h(u,:),1,bits) contem uma matriz com o código repetido varias vezes 16 % Espalhado irá conter o produto interno destas duas matrizes 17 % Este produto interno é a sequencia espalhada do usuario. 18 for u=1:usuarios 19 tmp = reshape(repmat(i(u,:),rc*super,1),1,rc*bits*super); 20 Espalhado(u,(1:bits*Rc*super)+delay(u)) = tmp.*repmat(h(u,:),1,bits); 21 Canal(1,:) = Canal(1,:) + Espalhado(u,:); 22 end Ruido = sqrt(rc/(2*10^(.1*snr)))*randn(1,bits*rc*super+max(delay)); 25 Canal(1,:) = Canal(1,:) + Ruido(1,:); for u=1:usuarios 28 % a saida O é o sinal da soma da matriz gerado pela reformatação de 29 % Canal e a repeticão da matriz H o número de bits necessários 30 O(u,:) = sign(sum( reshape(canal(1,(1:bits*rc*super)+delay(u)).* repmat(h(u,:),1,bits),rc*super,bits), ) ); 34 end 4
9 5.2 dsss_sic.m dsss_sic.m 1 function [O] = dsss_sic(canal,i,usuarios, super, Rc, snr,peso,delay) 2 3 bits = size(i,2); % numero de bits é o número de colunas de I 4 5 H = walsh(rc); 6 7 H = reshape(repmat(h,1,super), Rc, super*rc); O = zeros (usuarios,bits); 11 % a funcao sign realiza o detector comparando com zero do sinal recebido 12 % tmp contem a sequencia decodificado, reespalhada com o codigo deste usuario 13 % em seguida retira-se do canal esta sequencia contida em tmp 14 for u=1:usuarios 15 O(u,:) = sign(sum(reshape(canal(1,(1:bits*rc*super)+delay(u)).*repmat(h(u,:), ,bits),Rc*super,bits),1) ); 17 tmp = reshape(repmat(o(u,:),rc*super,1),1,rc*bits*super); 18 Canal(1,(1:bits*Rc*super)+delay(u)) = Canal(1,(1:bits*Rc*super)+delay(u)) Peso(u)*(tmp.*repmat(H(u,:),1,bits)); 20 end 5
10 5.3 do_sic.m 1 usuarios = 2; 2 bits = 1e3; 3 % super amostragem? 4 super = 1; do_sic.m 5 % rc = rate chip, taxa de chips ou fator de espalhamento 6 rc = 8; 7 resultado = []; 8 9 % sinal ruido inicial e final 10 SNR = 0:0.5:16; 11 nsnr = size(snr,2); % cores dos gráficos 14 cores = jet(4); 15 linhas = { -, --, :, -. }; %Pesos = [1 0.2]; 18 Pesos = [ ]; 19 Pesos = Pesos/norm(Pesos); 20 delay = [ ]; 21 Inorm = (rand(usuarios,bits)>0.5)*2-1; 22 bernor = zeros (usuarios,nsnr); 23 bersic = zeros (usuarios,nsnr); 24 ber = zeros (usuarios,nsnr); % I é a matrix I normalizada vezes a matriz Peso transposta e replicada 27 % bits vezes 28 I = Inorm.*repmat(Pesos,1,bits); for i=1:size(snr,2) 31 fprintf( SNR=%d\t %d bits\t, SNR(i), bits*usuarios); [O Canal]= dsss(i,usuarios,super,rc,snr(i),delay); 34 bernor(:,i) = sum(abs(o-inorm)>0,2)/(bits); 35 fprintf( BERnor=%.5g\t,sum(bernor(:,i))); O2 = dsss_sic(canal,i,usuarios,super,rc,snr(i),pesos,delay); 38 bersic(:,i) = sum(abs(o2-inorm)>0,2)/(bits); 39 fprintf( BERsic=%.5g\n,sum(bersic(:,i))); end % SNR do primeiro 45 % SNR = Eb/(No+Eb2+Eb3+Eb4) 46 for j=1:usuarios 47 ber(j,:)=qfunc(sqrt(2*(10.^(snr/10)))*pesos(j)); 48 end hold off; 51 semilogy(snr,ber, - ); 52 hold on; 53 semilogy(snr,bernor, x- ); 6
11 54 semilogy(snr,bersic, o- ); legend( Teórico1, Teórico2, Teórico3, Teórico4, Normal1, Normal2, Normal3, Normal4, SIC1, SIC2, SIC3, SIC4, location, SouthWest ); 59 %semilogy(resultado(:,1),resultado(:,2), b-, % resultado(:,1),ber, k- ); 61 hold off; 7
12 5.4 walsh.m 1 function [H] = walsh(n) 2 H = [1]; 3 while n>1 4 H = [ H H; H -H]; 5 n = n/2; 6 end 7 tmp = H(1,:); 8 H(1,:) = H(size(H,1),:); 9 H(size(H,1),:) = tmp; walsh.m 8
13 6 Implementação em lógica digital (FPGA) A implementação em FPGA foi feita totalmente em código VHDL, sem o uso de esquemáticos, seguindo a orientação atual do mercado. Foram utilizados algumas técnicas aprendidas nas disciplinas da EPUSP, como por exemplo buffers circulares, para armazenar o canal temporariamente até que o sistema pudesse eliminar a interferência do usuário atual do canal. Todo o processo foi feito utilizando Test Benches em VHDL, que são scripts iguais aos processos normais de VHDL, mas que permitem ajuste de entradas e esperas por tempos determinados, como por exemplo esperar 10ms para tornar um sinal alto, o que auxilia em muito os testes, liberando mais recursos para a solução do problema, pois basta rodá-lo, sem intervenções para que todas as entradas sejam processadas. 6.1 Geração do ruído AWGN Um dos maiores problemas na migração do MATLAB para a FPGA se consiste numa geração de ruído do tipo gaussiano (AWGN), foi feito um ruído parecido usando um gerador aleatório baseado em LFSR, estes tipos de geradores são razoavelmente bem discutidos nos documentos da própria Xilinx (fabricante do FPGA), inclusive com tabelas dos polinômios geradores de mais comprimento, em particular foram utilizadas duas referências que se complementar: Registradores de deslocamento eficientes, contadores LFSR e geradores de seqüências longas pseudoaleatórias, de código XAPP 052, encontrado em application_notes/xapp052.pdf Registradores de deslocamento linear com realimentação em dispositivos Virtex, de código XAPP 210, encontrado em pdf. Para tentar entender melhor e também validar esse recurso de gerar um ruído a partir de uma LFSR foram feitos alguns estudos, seguindo as orientações do Prof. Panazio, para verificar o comprimento da sequência e também seu espectro. No projeto final foi adotada uma LFSR de 64 bits, seguida de um processo que permitia reduzir o ruído gerado, dividindo o mesmo por potências de 2 (2 x ), assim pode-se fazer um ajuste mais fino das condições de SNR desejadas, evitando problemas de quantização na passagem do ambiente analógico real (simulado pelo MATLAB), e o ambiente digital da FPGA. Todos os canais que simulassem um meio analógico foram feitos utilizando 64 bits de precisão, mas por uma facilidade maior de design, o resultado da soma dos 4 usuários e do ruído gera um canal também de 64 bits, por isso é preciso tomar um cuidado maior para evitar estouros nesses sinais, entretanto com menos de 64 bits já é possível representar o canal com precisão, sobrando alguns bits para eventuais estouros (por exemplo utilizando ganhos e ruídos de no máximo 32 bits, tendo espaço para que a soma destes sinais caiba em 64 bits sem nenhuma distorção). 9
14 Figura 4: Autocorrelação de um ruído gerado por uma LFSR de 32 bits 10
15 Figura 5: Autocorrelação de um ruído gerado por uma LFSR de 64 bits, foram tomadas amostras e não foi encontrado o máximo comprimento. 7 Códigos VHDL do projeto A seguir estão inclusos os códigos VHDL usados no projeto, em ordem alfabética. Para facilitar o leitor, os códigos de maior importância são os seguintes: placa.vhd Contém o código da visão mais ampla do projeto, integrando sub-módulos como o controle do display LCD e o módulo chamado TF, que contém tanto o sistema de espalhamento espectral normal quanto o SIC. lcd.vhd Contém o módulo de controle do display LCD, este módulo irá acessar uma memória com a tela do display, esta memória deve ser pré-programada como no caso feito pelo módulo compensador. compensador.vhd Contém o módulo de controle geral do projeto, controlando o módulo TF com os dois transmissores/receptores, e também com a programação necessária para preencher a memória do display com os dados. TF.vhd Módulo principal do projeto, contendo tanto o transmissor/receptor normal quanto o SIC, tem como saída os números de bits transmitidos e os erros associados. ProvaSoft.vhd Contém o transmissor/receptor normal utilizando detector soft. ProvaSIC.vhd Contém o transmissor/receptor SIC. Uma atenção especial deve ser dada aos testbenches, que conforme já explicado automatiza o processo de testes e formação de resultados. Neste projeto foram utilizadas as bibliotecas std.textio.all e também ieee.std_logic_textio.all, estas bibliotecas permitem a comunicação entre códigos VHDL e arquivos de texto na simulação, podendo assim gerar saídas em texto para posterior carga no MATLAB 11
16 ou outro software para seu processamento adequado, além disto estas bibliotecas também permitem importar dados de arquivos textos como entradas para o código VHDL, podendo assim simular um canal CDMA armazenado em texto, para validar um receptor. 7.1 atrasa64.vhd atrasa64.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 entity atrasa64 is 9 Port ( clk : in STD_LOGIC; 10 entrada : in STD_LOGIC; 11 saida : out STD_LOGIC); 12 end atrasa64; architecture Behavioral of atrasa64 is begin 17 process (clk) 18 variable tmp : STD_LOGIC_VECTOR (127 downto 0) := ( others => 0 ); 19 begin 20 if (CLK event and CLK= 1 ) then 21 saida <= tmp(62); 22 tmp(127 downto 1) := tmp(126 downto 0); 23 tmp(0) := entrada; 24 end if; 25 end process; end Behavioral; 7.2 Codificador.vhd Codificador.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 use IEEE.NUMERIC_STD.ALL; 9 10 entity Codificador is 11 Port ( CLK : in STD_LOGIC; 12 DADO : in STD_LOGIC; 13 CHIP : in STD_LOGIC_VECTOR (63 downto 0); 14 CHIPCNT : in STD_LOGIC_VECTOR (5 downto 0); 15 CHIPCL : in STD_LOGIC; 16 ENABLE : in STD_LOGIC; 17 SAIDA : out STD_LOGIC; 12
17 18 SINC : out STD_LOGIC; 19 C : out STD_LOGIC_VECTOR(5 downto 0)); 20 end Codificador; architecture Behavioral of Codificador is 23 signal memchip : std_logic_vector(63 downto 0); 24 signal cnt : integer range 0 to 63 := 0; 25 signal d : std_logic := 0 ; 26 begin 27 process (d,cnt) begin 28 SAIDA <= (d xor CHIP(cnt)); 29 C <= STD_LOGIC_VECTOR(to_unsigned(cnt,6)); 30 if (cnt = 0) then 31 SINC <= 1 ; 32 else SINC <= 0 ; 33 end if; 34 end process; process (CHIP) 37 begin 38 memchip <= CHIP; 39 end process; process (CLK) 42 begin 43 if CLK event and CLK= 1 then 44 if CHIPCL = 1 then 45 CNT <= to_integer(unsigned(chipcnt)); 46 d <= DADO; 47 else 48 if cnt = 63 then 49 cnt <= 0; 50 else 51 cnt <= cnt + 1; 52 end if; 53 end if; 54 if (cnt = 0) then 55 d <= DADO; 56 end if; 57 end if; 58 end process; 59 end Behavioral; 7.3 Compensador.vhd Compensador.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 use IEEE.NUMERIC_STD.ALL; 9 13
18 10 entity Compensador is 11 Port ( 12 CLK : in STD_LOGIC; 13 CH_N : in STD_LOGIC; 14 CH_S : in STD_LOGIC; 15 CH_E : in STD_LOGIC; 16 CH_W : in STD_LOGIC; 17 CH_C : in STD_LOGIC; 18 AN1 : in std_logic_vector(63 DOWNTO 0); 19 AN2 : in std_logic_vector(63 DOWNTO 0); 20 AN3 : in std_logic_vector(63 DOWNTO 0); 21 AN4 : in std_logic_vector(63 DOWNTO 0); 22 AE1 : in std_logic_vector(63 DOWNTO 0); 23 AE2 : in std_logic_vector(63 DOWNTO 0); 24 AE3 : in std_logic_vector(63 DOWNTO 0); 25 AE4 : in std_logic_vector(63 DOWNTO 0); 26 BN1 : in std_logic_vector(63 DOWNTO 0); 27 BN2 : in std_logic_vector(63 DOWNTO 0); 28 BN3 : in std_logic_vector(63 DOWNTO 0); 29 BN4 : in std_logic_vector(63 DOWNTO 0); 30 BE1 : in std_logic_vector(63 DOWNTO 0); 31 BE2 : in std_logic_vector(63 DOWNTO 0); 32 BE3 : in std_logic_vector(63 DOWNTO 0); 33 BE4 : in std_logic_vector(63 DOWNTO 0); RESETTF : out STD_LOGIC; 36 LOADLCD : out STD_LOGIC; 37 ADDMLCD : out STD_LOGIC_VECTOR(2 downto 0); 38 ADDMEM : out STD_LOGIC_VECTOR(7 downto 0); 39 BYTEMEM : out STD_LOGIC_VECTOR(7 downto 0); 40 GANHO1 : OUT STD_LOGIC_VECTOR (63 DOWNTO 0); 41 GANHO2 : OUT STD_LOGIC_VECTOR (63 DOWNTO 0); 42 GANHO3 : OUT STD_LOGIC_VECTOR (63 DOWNTO 0); 43 GANHO4 : OUT STD_LOGIC_VECTOR (63 DOWNTO 0); 44 GANHOR : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); 45 LED0 : out STD_LOGIC; 46 LED1 : out STD_LOGIC; 47 LED2 : out STD_LOGIC; 48 LED3 : out STD_LOGIC); 49 end Compensador; architecture Behavioral of Compensador is 52 signal NB,G1,G2,G3,G4 : std_logic_vector (63 downto 0) := (OTHERS => 0 ); 53 type estados is (iniciando, aguarda, rodando, atualizando,atualiza,atualizau1); 54 signal estado,proxestado : estados := iniciando; 55 signal nibble : std_logic_vector (3 downto 0); 56 signal endmem : unsigned (7 downto 0) := (others => 0 ); 57 signal hex : std_logic_vector (7 downto 0); 58 signal dan1,dan2,dan3,dan4,dbn1,dbn2,dbn3,dbn4,dae1,dae2,dae3,dae4,dbe1,dbe2,dbe3, 59 dbe4,atualganho,atualerroa,atualerrob : std_logic_vector(63 downto 0); 60 signal usuario,pusuario : std_logic_vector (1 downto 0) := "00"; 61 signal cheacionada,chcacionada,chnacionada,chwacionada,atmemoria : std_logic := 0 ; 62 signal tipoganho : unsigned (1 downto 0) := (others => 0 ); COMPONENT nibble2hex 14
19 65 Port ( NIBBLE : in STD_LOGIC_VECTOR (3 downto 0); 66 HEX : out STD_LOGIC_VECTOR (7 downto 0)); 67 end component; begin N2H1 : nibble2hex port map (nibble, hex); process (tipoganho) 74 BEGIN 75 case tipoganho is 76 when "00" => 77 G1 <= X" FFFFFFF00"; 78 G2 <= X" AD2010"; 79 G3 <= X" BAAB"; 80 G4 <= X" FFF"; 81 GANHOR <= " "; 82 when "01" => 83 G1 <= X" FFFFFFF00"; 84 G2 <= X" AD2010"; 85 G3 <= X" BAAB"; 86 G4 <= X" FFF"; 87 GANHOR <= " "; 88 when "10" => 89 G1 <= X" FFFFFFF11"; 90 G2 <= X" B58F6EB5D"; 91 G3 <= X" C422F18"; 92 G4 <= X" B52D1F95"; 93 GANHOR <= " "; 94 when "11" => 95 G1 <= X" FFFFFFF11"; 96 G2 <= X" B58F6EB5D"; 97 G3 <= X" C422F18"; 98 G4 <= X" B52D1F95"; 99 GANHOR <= " "; 100 when others => 101 G1 <= X" FFFFFFF00"; 102 G2 <= X" FDEAD2010"; 103 G3 <= X" DAD0BAAB"; 104 G4 <= X" ECF2010"; 105 GANHOR <= " "; 106 end case; 107 end process; ADDMLCD <= "0"&usuario; 110 led0 <= usuario(0); 111 led1 <= usuario(1); 112 led2 <= tipoganho(0); 113 led3 <= tipoganho(1); 114 LOADLCD <= CH_N; GANHO1 <= G1; 117 GANHO2 <= G2; 118 GANHO3 <= G3; 119 GANHO4 <= G4; 15
20 120 ADDMEM <= std_logic_vector(endmem-1); process (usuario) 123 begin 124 case usuario is 125 when "00" => 126 atualganho <= dan1; 127 atualerroa <= dae1; 128 atualerrob <= dbe1; 129 when "01" => 130 atualganho <= dan2; 131 atualerroa <= dae2; 132 atualerrob <= dbe2; 133 when "10" => 134 atualganho <= dan3; 135 atualerroa <= dae3; 136 atualerrob <= dbe3; 137 when "11" => 138 atualganho <= dan4; 139 atualerroa <= dae4; 140 atualerrob <= dbe4; 141 when others => 142 end case; 143 end process; process (CLK) 146 variable n : integer := 0; 147 variable delay : integer := 0; 148 variable cnib : integer := 0; 149 begin 150 if rising_edge(clk) then 151 case estado is 152 when iniciando => 153 RESETTF <= 1 ; 154 delay := 10000; 155 estado <= aguarda; 156 proxestado <= rodando; 157 usuario <= "00"; 158 cnib := 0; 159 endmem <= " "; 160 when aguarda => 161 if delay = 0 then 162 estado <= proxestado; 163 else 164 delay := delay - 1; 165 end if; 166 when rodando => 167 RESETTF <= 0 ; 168 atmemoria <= 0 ; when atualiza => 171 dan1 <= an1; 172 dan2 <= an2; 173 dan3 <= an3; 174 dan4 <= an4; 16
21 175 dbn1 <= bn1; 176 dbn2 <= bn2; 177 dbn3 <= bn3; 178 dbn4 <= bn4; 179 dae1 <= ae1; 180 dae2 <= ae2; 181 dae3 <= ae3; 182 dae4 <= ae4; 183 dbe1 <= be1; 184 dbe2 <= be2; 185 dbe3 <= be3; 186 dbe4 <= be4; estado <= atualizau1; 189 usuario <= "00"; 190 cnib := 0; 191 endmem <= " "; 192 atmemoria <= 1 ; 193 when atualizau1 => 194 case cnib is 195 when 0 => 196 BYTEMEM <= " "; -- U 197 when 1 => 198 BYTEMEM <= "001100"&usuario; when 2 => 200 BYTEMEM <= x"4e"; -- N 201 nibble <= atualganho(51 downto 48); 202 when 3 => 203 nibble <= atualganho(47 downto 44); 204 BYTEMEM <= HEX; 205 when 4 => 206 nibble <= atualganho(43 downto 40); 207 BYTEMEM <= HEX; 208 when 5 => 209 nibble <= atualganho(39 downto 36); 210 BYTEMEM <= HEX; 211 when 6 => 212 nibble <= atualganho(35 downto 32); 213 BYTEMEM <= HEX; 214 when 7 => 215 nibble <= atualganho(31 downto 28); 216 BYTEMEM <= HEX; 217 when 08 => 218 nibble <= atualganho(27 downto 24); 219 BYTEMEM <= HEX; 220 when 09 => 221 nibble <= atualganho(23 downto 20); 222 BYTEMEM <= HEX; 223 when 10 => 224 nibble <= atualganho(19 downto 16); 225 BYTEMEM <= HEX; 226 when 11 => 227 nibble <= atualganho(15 downto 12); 228 BYTEMEM <= HEX; 229 when 12 => 17
22 230 nibble <= atualganho(11 downto 08); 231 BYTEMEM <= HEX; 232 when 13 => 233 nibble <= atualganho(07 downto 04); 234 BYTEMEM <= HEX; 235 when 14 => 236 nibble <= atualganho(03 downto 00); 237 BYTEMEM <= HEX; 238 when 15 => 239 nibble <= atualerroa(31 downto 28); 240 BYTEMEM <= HEX; FINAL PRIMEIRA LINHA when 16 => 243 nibble <= atualerroa(27 downto 24); 244 BYTEMEM <= HEX; 245 when 17 => 246 nibble <= atualerroa(23 downto 20); 247 BYTEMEM <= HEX; 248 when 18 => 249 nibble <= atualerroa(19 downto 16); 250 BYTEMEM <= HEX; 251 when 19 => 252 nibble <= atualerroa(15 downto 12); 253 BYTEMEM <= HEX; 254 when 20 => 255 nibble <= atualerroa(11 downto 08); 256 BYTEMEM <= HEX; 257 when 21 => 258 nibble <= atualerroa(07 downto 04); 259 BYTEMEM <= HEX; 260 when 22 => 261 nibble <= atualerroa(03 downto 00); 262 BYTEMEM <= HEX; 263 when 23 => 264 nibble <= atualerrob(31 downto 28); 265 BYTEMEM <= HEX; FINAL ERRO A when 24 => 268 nibble <= atualerrob(27 downto 24); 269 BYTEMEM <= X"20"; 270 when 25 => 271 nibble <= atualerrob(23 downto 20); 272 BYTEMEM <= HEX; 273 when 26 => 274 nibble <= atualerrob(19 downto 16); 275 BYTEMEM <= HEX; 276 when 27 => 277 nibble <= atualerrob(15 downto 12); 278 BYTEMEM <= HEX; 279 when 28 => 280 nibble <= atualerrob(11 downto 08); 281 BYTEMEM <= HEX; 282 when 29 => 283 nibble <= atualerrob(07 downto 04); 284 BYTEMEM <= HEX; 18
23 285 when 30 => 286 nibble <= atualerrob(03 downto 00); 287 BYTEMEM <= HEX; 288 when 31 => 289 BYTEMEM <= HEX; 290 when others => estado <= iniciando; 292 end case; 293 cnib := cnib + 1; 294 ENDMEM <= ENDMEM + 1; 295 if cnib = 32 then 296 if usuario = "11" then 297 estado <= rodando; 298 atmemoria <= 0 ; 299 else 300 usuario <= std_logic_vector(unsigned(usuario)+1); 301 cnib := 0; 302 end if; 303 end if; when others => 306 estado <= iniciando; 307 end case; if CH_S = 1 then 310 estado <= iniciando; 311 end if; 312 if CH_C = 1 and chcacionada= 0 then 313 chcacionada <= 1 ; 314 elsif ch_c= 0 and chcacionada= 1 then 315 chcacionada <= 0 ; 316 estado <= atualiza; 317 endmem <= " "; 318 usuario <= "11"; 319 END IF; 320 if CH_E = 1 and cheacionada= 0 then 321 pusuario <= std_logic_vector(unsigned(usuario)+"01"); 322 cheacionada <= 1 ; 323 elsif ch_e= 0 and cheacionada= 1 then 324 usuario <= pusuario; 325 cheacionada <= 0 ; 326 END IF; if CH_W = 1 and chwacionada= 0 then 329 chwacionada <= 1 ; 330 elsif ch_w= 0 and chwacionada= 1 then 331 tipoganho <= tipoganho + "01"; 332 chwacionada <= 0 ; 333 END IF; 334 end if; 335 end process; end Behavioral; 19
24 7.4 ControlaBuffer.vhd ControlaBuffer.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 use IEEE.NUMERIC_STD.ALL; 9 10 entity ControlaBuffer is 11 Port ( CLK : in STD_LOGIC; 12 ATRASO : in STD_LOGIC_VECTOR (5 downto 0); 13 ADDREAD : out STD_LOGIC_VECTOR (7 downto 0) := " "; 14 ADDWRITE : out STD_LOGIC_VECTOR (7 downto 0) := " "); 15 end ControlaBuffer; architecture Behavioral of ControlaBuffer is begin 20 process (CLK) 21 variable c: unsigned (7 downto 0) := " "; 22 begin 23 if CLK= 1 and CLK event then 24 ADDREAD <= STD_LOGIC_VECTOR(c); 25 ADDWRITE <= STD_LOGIC_VECTOR(c+unsigned(ATRASO)); 26 c := c + 1; 27 end if; 28 end process; 29 end Behavioral; 7.5 debounce.vhd debounce.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 use IEEE.STD_LOGIC_ARITH.ALL; 8 use IEEE.STD_LOGIC_UNSIGNED.ALL; 9 10 entity debounce is 11 Port ( CLK : in STD_LOGIC; 12 DI : in STD_LOGIC; 13 DO : out STD_LOGIC); 14 end debounce; architecture Behavioral of debounce is 17 begin process (CLK) 20 variable nclk : integer := ; 20
25 21 variable d1,d2 : std_logic := 0 ; 22 begin 23 if nclk = 0 then 24 d1 := d2; 25 d2 := DI; 26 nclk := ; 27 else 28 nclk := nclk - 1; 29 end if; 30 DO <= d1 and d2; 31 end process; end Behavioral; 7.6 DecodificadorSIC.vhd DecodificadorSIC.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 use IEEE.NUMERIC_STD.ALL; 9 10 entity DecodificadorSIC is 11 Port ( CLK : in STD_LOGIC; 12 CANAL : in STD_LOGIC_VECTOR (63 downto 0); 13 CHIP : in STD_LOGIC_VECTOR (63 downto 0); 14 CHIPCNT : in STD_LOGIC_VECTOR (5 downto 0); 15 CHIPCL : in STD_LOGIC; 16 SINCIN : in STD_LOGIC; 17 DETECTA : out STD_LOGIC; 18 DADO : out STD_LOGIC; 19 ACCOUT : out STD_LOGIC_VECTOR(31 downto 0); 20 C : out STD_LOGIC_VECTOR(5 downto 0); 21 CANALOUT : out STD_LOGIC_VECTOR (63 downto 0); 22 SINCLOOPIN : in STD_LOGIC_VECTOR (3 downto 0); 23 SINCLOOPOUT : out STD_LOGIC_VECTOR (3 downto 0); 24 GANHO : in STD_LOGIC_VECTOR(63 downto 0) 25 ); end DecodificadorSIC; architecture Behavioral of DecodificadorSIC is COMPONENT BufferCanal 32 PORT ( 33 clka : IN STD_LOGIC; 34 ena : IN STD_LOGIC; 35 wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); 36 addra : IN STD_LOGIC_VECTOR(6 DOWNTO 0); 37 dina : IN STD_LOGIC_VECTOR(63 DOWNTO 0); 38 clkb : IN STD_LOGIC; 21
26 39 enb : IN STD_LOGIC; 40 addrb : IN STD_LOGIC_VECTOR(6 DOWNTO 0); 41 doutb : OUT STD_LOGIC_VECTOR(63 DOWNTO 0) 42 ); 43 END COMPONENT; COMPONENT BufferSinc 47 port ( 48 clka: IN std_logic; 49 ena: IN std_logic; 50 wea: IN std_logic_vector(0 downto 0); 51 addra: IN std_logic_vector(6 downto 0); 52 dina: IN std_logic_vector(3 downto 0); 53 clkb: IN std_logic; 54 enb: IN std_logic; 55 addrb: IN std_logic_vector(6 downto 0); 56 doutb: OUT std_logic_vector(3 downto 0)); 57 END COMPONENT; COMPONENT Accum 61 PORT ( 62 b : IN STD_LOGIC_VECTOR(63 DOWNTO 0); 63 clk : IN STD_LOGIC; 64 add : IN STD_LOGIC; 65 sclr : IN STD_LOGIC; 66 q : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) 67 ); 68 END COMPONENT; signal memchip,canalat,csic,can0 : std_logic_vector(63 downto 0) := (others => 0 ); 73 signal ADDCANW,ADDCANR,ADDSINCR : std_logic_vector(6 downto 0) := (others => 0 ); 74 shared variable cnt : integer range 0 to 63 := 0; 75 signal acc : std_logic_vector (127 downto 0) := (others => 0 ); 76 signal acc2 : std_logic_vector (127 downto 0); 77 signal addctl,limpa : std_logic := 0 ; 78 signal ultimodado : std_logic; begin 81 Acumulador1: Accum port map (CANAL,CLK,addctl,limpa,ACC2); 82 BSinc : BufferSinc port map (CLK, 1, "1", ADDCANW, SINCLOOPIN, 83 CLK, 1, ADDSINCR, SINCLOOPOUT); 84 BCanal : BufferCanal port map (CLK, 1, "1", ADDCANW, CANAL, CLK, 1, ADDCANR, CANALAT); DETECTA <= SINCIN; 88 process (CHIP) 89 begin 90 memchip <= CHIP; 91 end process; process (SINCIN) 22
27 94 begin 95 if rising_edge(sincin) then 96 ultimodado <= not acc(127); 97 DADO <= ultimodado; 98 ACCOUT <= ACC(63 DOWNTO 32); 99 end if; 100 end process; process (CLK,CHIPCL,CHIPCNT) 104 variable accbuffer : std_logic_vector(127 downto 0); 105 begin 106 if rising_edge(clk) then 107 ADDCANW <= std_logic_vector(unsigned(addcanr) + 64); 108 ADDSINCR <= std_logic_vector(unsigned(addcanr)); 109 ADDCANR <= std_logic_vector(unsigned(addcanr) + 1); 110 if SINCIN= 1 then 111 cnt := 1; 112 if (memchip(0) = 1 ) then 113 CAN0 <= std_logic_vector(signed(canal)); 114 else 115 CAN0 <= std_logic_vector(-signed(canal)); 116 end if; 117 end if; 118 if CHIPCL = 1 then 119 CNT := to_integer(unsigned(chipcnt)); 120 end if; 121 C <= STD_LOGIC_VECTOR(to_unsigned(cnt,6)); 122 if (ultimodado xor memchip(cnt)) = 1 then 123 CSIC <= std_logic_vector(signed(ganho)); 124 else 125 CSIC <= std_logic_vector(-signed(ganho)); 126 end if; 127 CANALOUT <= std_logic_vector(signed(canalat) - signed(csic)); 128 if memchip(cnt) = 1 or memchip(cnt)= 0 then 129 addctl <= not memchip(cnt); 130 end if; 131 if cnt = 63 then 132 limpa <= 1 ; 133 ACC <= std_logic_vector(signed(acc2) + signed(can0)); 134 cnt := 1; 135 else 136 cnt := cnt + 1; 137 limpa <= 0 ; 138 end if; 139 END IF; 140 end process; end Behavioral; 7.7 DecodificadorSoft.vhd DecodificadorSoft.vhd 23
28 Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 use IEEE.NUMERIC_STD.ALL; 9 10 entity DecodificadorSoft is 11 Port ( CLK : in STD_LOGIC; 12 CANAL : in STD_LOGIC_VECTOR (63 downto 0); 13 CHIP : in STD_LOGIC_VECTOR (63 downto 0); 14 CHIPCNT : in STD_LOGIC_VECTOR (5 downto 0); 15 CHIPCL : in STD_LOGIC; 16 SINCIN : in STD_LOGIC; 17 DETECTA : out STD_LOGIC; 18 DADO : out STD_LOGIC; 19 ACCOUT : out STD_LOGIC_VECTOR(31 downto 0); 20 C : out STD_LOGIC_VECTOR(5 downto 0)); end DecodificadorSoft; architecture Behavioral of DecodificadorSoft is COMPONENT Accum 27 PORT ( 28 b : IN STD_LOGIC_VECTOR(63 DOWNTO 0); 29 clk : IN STD_LOGIC; 30 add : IN STD_LOGIC; 31 sclr : IN STD_LOGIC; 32 q : OUT STD_LOGIC_VECTOR(127 DOWNTO 0) 33 ); 34 END COMPONENT; signal CAN0 : std_logic_vector(63 downto 0) := (others => 0 ); 38 signal memchip : std_logic_vector(63 downto 0); 39 shared variable cnt : integer range 0 to 63 := 0; 40 signal acc : std_logic_vector (127 downto 0) := (others => 0 ); 41 signal acc2 : std_logic_vector (127 downto 0); 42 signal addctl,limpa : std_logic := 0 ; begin 45 Acumulador1: Accum port map (CANAL,CLK,addctl,limpa,ACC2); 46 DETECTA <= SINCIN; process (CHIP) 49 begin 50 memchip <= CHIP; 51 end process; process (SINCIN) 54 begin 55 if rising_edge(sincin) then 24
29 56 DADO <= not ACC(127); 57 ACCOUT <= ACC2(63 DOWNTO 32); 58 end if; 59 end process; process (CLK,CHIPCL,CHIPCNT,SINCIN) 63 variable accbuffer : std_logic_vector(127 downto 0); 64 begin 65 if rising_edge(clk) then 66 if SINCIN= 1 then 67 cnt := 1; 68 if (memchip(0) = 1 ) then 69 CAN0 <= std_logic_vector(signed(canal)); 70 else 71 CAN0 <= std_logic_vector(-signed(canal)); 72 end if; 73 elsif CHIPCL = 1 then 74 CNT := to_integer(unsigned(chipcnt)); 75 end if; 76 C <= STD_LOGIC_VECTOR(to_unsigned(cnt,6)); 77 if memchip(cnt) = 1 or memchip(cnt)= 0 then 78 addctl <= not memchip(cnt); 79 end if; 80 if cnt = 63 then 81 limpa <= 1 ; 82 ACC <= std_logic_vector(signed(acc2) + signed(can0)); 83 cnt := 1; 84 else 85 cnt := cnt + 1; 86 limpa <= 0 ; 87 end if; 88 END IF; 89 end process; 90 end Behavioral; 7.8 GanhoUsuario.vhd GanhoUsuario.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 use IEEE.NUMERIC_STD.ALL; 9 10 entity GanhoUsuario is 11 Port ( ENTRADA : in STD_LOGIC; 12 GANHO : in STD_LOGIC_VECTOR (63 downto 0); 13 SAIDA : out STD_LOGIC_VECTOR (63 downto 0)); 14 end GanhoUsuario; architecture Behavioral of GanhoUsuario is 25
30 17 18 begin process (ENTRADA,GANHO) 21 begin 22 if (ENTRADA= 0 ) then 23 SAIDA <= STD_LOGIC_VECTOR(-SIGNED(GANHO)); 24 else 25 SAIDA <= STD_LOGIC_VECTOR(SIGNED(GANHO)); 26 end if; 27 end process; end Behavioral; 7.9 LCD.vhd lcd.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 use IEEE.NUMERIC_STD.ALL; 9 10 entity LCD is 11 Port ( CLK : in STD_LOGIC; 12 LOAD : in STD_LOGIC; 13 BYTE : in STD_LOGIC_VECTOR(7 downto 0); 14 ADDR : out STD_LOGIC_VECTOR(4 downto 0); 15 LCD_RS : out STD_LOGIC; 16 LCD_RW : out STD_LOGIC; 17 LCD_E : out STD_LOGIC; 18 D4 : out STD_LOGIC; 19 D5 : out STD_LOGIC; 20 D6 : out STD_LOGIC; 21 D7 : out STD_LOGIC); 22 end LCD; architecture Behavioral of LCD is 25 type estados is (inicio, init1,aguarda,init2,init3,init4,init5,fs1,fs2,em1,em2,aguarda2, 26 di1,di2,cl1,cl2,iniciado,escrevealto,escrevebaixo,escrevealto2, 27 escrevebaixo2,pulalinha,pulalinha2); 28 signal estado : estados := inicio; 29 signal proxestado : estados := inicio; 30 signal dados,nibbled,nibbleu,hex : std_logic_vector(3 downto 0) := (others => 0 ); 31 signal e,rw,rs,l : std_logic := 0 ; 32 signal CNT : unsigned (4 downto 0) := (others => 0 ); constant ATRASOLCD : integer := ; 35 begin 36 D4 <= dados(0); 37 D5 <= dados(1); 26
31 38 D6 <= dados(2); 39 D7 <= dados(3); 40 ADDR <= STD_LOGIC_VECTOR(CNT); 41 LCD_E <= e; 42 LCD_RW <= 0 ; 43 LCD_RS <= rs; 44 process (CLK) 45 variable delay : integer := 0; 46 variable nclock : integer := 0; 47 variable gambi : integer := 0; 48 begin 49 if rising_edge(clk) then 50 nclock := nclock + 1; 51 case estado is 52 when inicio => 53 e <= 0 ; 54 rs <= 0 ; 55 rw <= 0 ; 56 dados <= "0000"; 57 L <= 0 ; 58 if LOAD= 1 then 59 estado <= init1; 60 end if; 61 when escrevebaixo => -- Comeco dos caracteres 62 rs <= 1 ; 63 rw <= 0 ; 64 dados <= BYTE(7 downto 4); 65 e <= 1 ; 66 proxestado <= EscreveAlto; 67 estado <= aguarda; 68 when escrevealto => -- 2nd estado dos caracteres 69 rs <= 1 ; 70 rw <= 0 ; 71 dados <= BYTE(3 downto 0); 72 e <= 1 ; 73 CNT <= CNT + 1; 74 if ((CNT(4) = 1 ) and (L= 0 )) then 75 rs <= 1 ; 76 --gambi := 40; 77 proxestado <= PulaLinha; 78 elsif (CNT = "11111") and (L= 1 ) then 79 proxestado <= inicio; 80 else 81 proxestado <= escrevebaixo; 82 end if; 83 estado <= aguarda; 84 when PulaLinha => 85 e <= 1 ; 86 rs <= 0 ; 87 dados <= "1100"; 88 proxestado <= PulaLinha2; 89 estado <= aguarda; 90 when PulaLinha2 => 91 e <= 1 ; 92 rs <= 0 ; 27
32 93 dados <= "0000"; 94 L <= 1 ; 95 proxestado <= escrevebaixo; 96 estado <= aguarda; 97 when init1 => 98 dados <= "0011"; 99 rs <= 0 ; 100 rw <= 0 ; 101 e <= 1 ; 102 delay := ATRASOLCD; 103 proxestado <= init2; 104 estado <= aguarda; 105 when init2 => 106 dados <= "0011"; 107 rs <= 0 ; 108 rw <= 0 ; 109 e <= 1 ; 110 delay := ATRASOLCD; 111 proxestado <= init3; 112 estado <= aguarda; 113 when init3 => 114 dados <= "0011"; 115 rs <= 0 ; 116 rw <= 0 ; 117 e <= 1 ; 118 delay := ATRASOLCD; 119 proxestado <= init4; 120 estado <= aguarda; 121 when init4 => 122 dados <= "0011"; 123 rs <= 0 ; 124 rw <= 0 ; 125 e <= 1 ; 126 delay := ATRASOLCD; 127 proxestado <= init5; 128 estado <= aguarda; 129 when init5 => 130 dados <= "0010"; 131 rs <= 0 ; 132 rw <= 0 ; 133 e <= 1 ; 134 delay := ATRASOLCD; 135 proxestado <= fs1; 136 estado <= aguarda; 137 when fs1 => 138 dados <= "0010"; 139 rs <= 0 ; 140 rw <= 0 ; 141 e <= 1 ; 142 delay := ATRASOLCD; 143 proxestado <= fs2; 144 estado <= aguarda; 145 when fs2 => 146 dados <= "1000"; 147 rs <= 0 ; 28
33 148 rw <= 0 ; 149 e <= 1 ; 150 delay := ATRASOLCD; 151 proxestado <= em1; 152 estado <= aguarda; 153 when em1 => 154 dados <= "0000"; -- 0x0 155 rs <= 0 ; 156 rw <= 0 ; 157 e <= 1 ; 158 delay := ATRASOLCD; 159 proxestado <= em2; 160 estado <= aguarda; 161 when em2 => 162 dados <= "0110"; -- 0x6 163 rs <= 0 ; 164 rw <= 0 ; 165 e <= 1 ; 166 delay := ATRASOLCD; 167 proxestado <= di1; 168 estado <= aguarda; 169 when di1 => 170 dados <= "0000"; -- 0x0 171 rs <= 0 ; 172 rw <= 0 ; 173 e <= 1 ; 174 delay := ATRASOLCD; 175 proxestado <= di2; 176 estado <= aguarda; 177 when di2 => 178 dados <= "1100"; -- 0xc 179 rs <= 0 ; 180 rw <= 0 ; 181 e <= 1 ; 182 delay := ATRASOLCD; 183 proxestado <= cl1; 184 estado <= aguarda; 185 when cl1 => 186 dados <= "0000"; -- 0x0 187 rs <= 0 ; 188 rw <= 0 ; 189 e <= 1 ; 190 delay := ATRASOLCD; 191 proxestado <= cl2; 192 estado <= aguarda; 193 when cl2 => 194 dados <= "0001"; -- 0x1 195 rs <= 0 ; 196 rw <= 0 ; 197 e <= 1 ; 198 delay := ATRASOLCD; 199 proxestado <= escrevebaixo; 200 estado <= aguarda; 201 when iniciado => 202 estado <= iniciado; 29
34 when aguarda => 205 if delay = 0 then 206 delay := ATRASOLCD; 207 estado <= aguarda2; 208 else 209 delay := delay - 1; 210 end if; 211 when aguarda2 => 212 e <= 0 ; 213 if delay = 0 then 214 estado <= proxestado; 215 else 216 delay := delay - 1; 217 end if; when others => 221 estado <= inicio; 222 end case; 223 end if; 224 end process; end Behavioral; 7.10 LFSR.vhd LFSR.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 use IEEE.NUMERIC_STD.ALL; 9 10 entity LFSR is 11 Port ( CLK : in STD_LOGIC; 12 ENA : in STD_LOGIC; 13 Q : out STD_LOGIC_VECTOR (63 downto 0)); 14 end LFSR; architecture Behavioral of LFSR is 17 begin 18 process (CLK) 19 variable LFMEM: UNSIGNED (63 downto 0) := 20 " "; begin 23 if (CLK event and CLK= 1 and ENA= 1 ) then 24 LFMEM := rotate_left(lfmem,1); 25 LFMEM(0) := LFMEM(63) xor LFMEM(62) xor LFMEM(60) xor LFMEM(59); 30
35 26 end if; 27 Q <= STD_LOGIC_VECTOR(LFMEM); 28 end process; 29 end Behavioral; 7.11 nibble2hex.vhd nibble2hex.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 entity nibble2hex is 9 Port ( NIBBLE : in STD_LOGIC_VECTOR (3 downto 0); 10 HEX : out STD_LOGIC_VECTOR (7 downto 0)); end nibble2hex; architecture Behavioral of nibble2hex is begin process (nibble) 19 begin 20 case nibble is 21 when "0000" => HEX <= " "; when "0001" => HEX <= " "; when "0010" => HEX <= " "; when "0011" => HEX <= " "; when "0100" => HEX <= " "; when "0101" => HEX <= " "; when "0110" => HEX <= " "; when "0111" => HEX <= " "; when "1000" => HEX <= " "; when "1001" => HEX <= " "; when "1010" => HEX <= " "; -- A 32 when "1011" => HEX <= " "; -- B 33 when "1100" => HEX <= " "; -- C 34 when "1101" => HEX <= " "; -- D 35 when "1110" => HEX <= " "; -- E 36 when "1111" => HEX <= " "; -- F 37 when others => HEX <= " "; --? 38 end case; 39 end process; end Behavioral; 7.12 Placa.vhd Placa.vhd Company: Escola Politécnica - Universidade de São Paulo 3 -- Engineer: Vinicius Pavanelli Vianna
36 library IEEE; 6 use IEEE.STD_LOGIC_1164.ALL; 7 8 entity Placa is 9 port ( 10 clk_fpga : in std_logic; 11 sw_c : in std_logic; 12 sw_n : in std_logic; 13 sw_s : in std_logic; 14 sw_e : in std_logic; 15 sw_w : in std_logic; 16 led0 : out std_logic; 17 led1 : out std_logic; 18 led2 : out std_logic; 19 led3 : out std_logic; 20 lcd_rw : out std_logic; 21 lcd_rs : out std_logic; 22 lcd_e : out std_logic; 23 lcd_d4 : out std_logic; 24 lcd_d5 : out std_logic; 25 lcd_d6 : out std_logic; 26 lcd_d7 : out std_logic; 27 CLK_VGA : out std_logic; 28 SAIDA_VGA : out std_logic_vector(7 downto 0); 29 SAIDA_VGA2 : out std_logic_vector(7 downto 0) 30 ); 31 end Placa; architecture Behavioral of Placa is COMPONENT TF 36 PORT( 37 CLK : IN std_logic; 38 RESET : IN std_logic; 39 GANHO1 : IN std_logic_vector(63 downto 0); 40 GANHO2 : IN std_logic_vector(63 downto 0); 41 GANHO3 : IN std_logic_vector(63 downto 0); 42 GANHO4 : IN std_logic_vector(63 downto 0); 43 GANHOR : IN std_logic_vector(7 downto 0); 44 AN1 : OUT std_logic_vector(63 downto 0); 45 AN2 : OUT std_logic_vector(63 downto 0); 46 AN3 : OUT std_logic_vector(63 downto 0); 47 AN4 : OUT std_logic_vector(63 downto 0); 48 AE1 : OUT std_logic_vector(63 downto 0); 49 AE2 : OUT std_logic_vector(63 downto 0); 50 AE3 : OUT std_logic_vector(63 downto 0); 51 AE4 : OUT std_logic_vector(63 downto 0); 52 BN1 : OUT std_logic_vector(63 downto 0); 53 BN2 : OUT std_logic_vector(63 downto 0); 54 BN3 : OUT std_logic_vector(63 downto 0); 55 BN4 : OUT std_logic_vector(63 downto 0); 56 BE1 : OUT std_logic_vector(63 downto 0); 57 BE2 : OUT std_logic_vector(63 downto 0); 58 BE3 : OUT std_logic_vector(63 downto 0); 32
37 59 BE4 : out std_logic_vector(63 DOWNTO 0); 60 ACCOUTA1 : out STD_LOGIC_VECTOR(31 downto 0); 61 ACCOUTA2 : out STD_LOGIC_VECTOR(31 downto 0); 62 ACCOUTA3 : out STD_LOGIC_VECTOR(31 downto 0); 63 ACCOUTA4 : out STD_LOGIC_VECTOR(31 downto 0); 64 ACCOUTB1 : out STD_LOGIC_VECTOR(31 downto 0); 65 ACCOUTB2 : out STD_LOGIC_VECTOR(31 downto 0); 66 ACCOUTB3 : out STD_LOGIC_VECTOR(31 downto 0); 67 ACCOUTB4 : out STD_LOGIC_VECTOR(31 downto 0) 68 ); 69 END COMPONENT; 70 COMPONENT debounce 71 PORT( 72 CLK : IN std_logic; 73 DI : IN std_logic; 74 DO : OUT std_logic 75 ); 76 END COMPONENT; component lcd 79 Port ( CLK : in STD_LOGIC; 80 LOAD : in STD_LOGIC; 81 BYTE : in STD_LOGIC_VECTOR(7 downto 0); 82 ADDR : out STD_LOGIC_VECTOR(4 downto 0); 83 LCD_RS : out STD_LOGIC; 84 LCD_RW : out STD_LOGIC; 85 LCD_E : out STD_LOGIC; 86 D4 : out STD_LOGIC; 87 D5 : out STD_LOGIC; 88 D6 : out STD_LOGIC; 89 D7 : out STD_LOGIC); 90 end component; COMPONENT Compensador 94 PORT( 95 CLK : IN std_logic; 96 CH_N : IN std_logic; 97 CH_S : IN std_logic; 98 CH_E : IN std_logic; 99 CH_W : IN std_logic; 100 CH_C : IN std_logic; 101 AN1 : IN std_logic_vector(63 downto 0); 102 AN2 : IN std_logic_vector(63 downto 0); 103 AN3 : IN std_logic_vector(63 downto 0); 104 AN4 : IN std_logic_vector(63 downto 0); 105 AE1 : IN std_logic_vector(63 downto 0); 106 AE2 : IN std_logic_vector(63 downto 0); 107 AE3 : IN std_logic_vector(63 downto 0); 108 AE4 : IN std_logic_vector(63 downto 0); 109 BN1 : IN std_logic_vector(63 downto 0); 110 BN2 : IN std_logic_vector(63 downto 0); 111 BN3 : IN std_logic_vector(63 downto 0); 112 BN4 : IN std_logic_vector(63 downto 0); 113 BE1 : IN std_logic_vector(63 downto 0); 33
38 114 BE2 : IN std_logic_vector(63 downto 0); 115 BE3 : IN std_logic_vector(63 downto 0); 116 BE4 : IN std_logic_vector(63 downto 0); 117 RESETTF : OUT std_logic; 118 LOADLCD : OUT std_logic; 119 ADDMLCD : OUT std_logic_vector(2 downto 0); 120 ADDMEM : OUT std_logic_vector(7 downto 0); 121 BYTEMEM : OUT std_logic_vector(7 downto 0); 122 GANHO1 : OUT std_logic_vector(63 downto 0); 123 GANHO2 : OUT std_logic_vector(63 downto 0); 124 GANHO3 : OUT std_logic_vector(63 downto 0); 125 GANHO4 : OUT std_logic_vector(63 downto 0); 126 GANHOR : OUT std_logic_vector(7 downto 0); 127 LED0 : OUT std_logic; 128 LED1 : OUT std_logic; 129 LED2 : OUT std_logic; 130 LED3 : OUT std_logic 131 ); 132 END COMPONENT; COMPONENT MemoriaDisplay 135 PORT ( 136 clka : IN STD_LOGIC; 137 ena : IN STD_LOGIC; 138 wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); 139 addra : IN STD_LOGIC_VECTOR(7 DOWNTO 0); 140 dina : IN STD_LOGIC_VECTOR(7 DOWNTO 0); 141 clkb : IN STD_LOGIC; 142 enb : IN STD_LOGIC; 143 addrb : IN STD_LOGIC_VECTOR(7 DOWNTO 0); 144 doutb : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) 145 ); 146 END COMPONENT; COMPONENT RedutorCLK 149 PORT( 150 CE_IN : IN std_logic; 151 CLKIN_IN : IN std_logic; 152 RST_IN : IN std_logic; 153 R_IN : IN std_logic; 154 S_IN : IN std_logic; 155 CLKIN_IBUFG_OUT : OUT std_logic; 156 CLK0_OUT : OUT std_logic; 157 DDR_CLK0_OUT : OUT std_logic; 158 LOCKED_OUT : OUT std_logic 159 ); 160 END COMPONENT; signal addmlcd : std_logic_vector(2 downto 0); 163 signal addlcd : std_logic_vector(4 downto 0); signal addmem,bytemem,bytelcd : std_logic_vector (7 downto 0); 166 signal na1,na2,na3,na4,nb1,nb2,nb3,nb4,ea1,ea2,ea3,ea4,eb1,eb2,eb3,eb4, 167 g1,g2,g3,g4 : std_logic_vector(63 downto 0) := (others => 0 ); 168 signal ACCOUTA1,ACCOUTA2,ACCOUTA3,ACCOUTA4, 34
39 169 ACCOUTB1,ACCOUTB2,ACCOUTB3,ACCOUTB4 170 : std_logic_vector(31 downto 0) := (others => 0 ); 171 signal gr,addrb : std_logic_vector (7 downto 0) := (others => 0 ); 172 signal loadlcd,reset,clkin,ddrclk,clk, 173 ch_c,ch_n,ch_s,ch_w,ch_e : std_logic := 0 ; begin DB1 : debounce PORT MAP (clk, SW_C, CH_C); 179 DB2 : debounce PORT MAP (clk, SW_N, CH_N); 180 DB3 : debounce PORT MAP (clk, SW_S, CH_S); 181 DB4 : debounce PORT MAP (clk, SW_W, CH_W); 182 DB5 : debounce PORT MAP (clk, SW_E, CH_E); Inst_TF: TF PORT MAP( 185 CLK => CLK, 186 RESET => reset, 187 GANHO1 => g1, 188 GANHO2 => g2, 189 GANHO3 => g3, 190 GANHO4 => g4, 191 GANHOR => gr, 192 AN1 => na1, 193 AN2 => na2, 194 AN3 => na3, 195 AN4 => na4, 196 AE1 => ea1, 197 AE2 => ea2, 198 AE3 => ea3, 199 AE4 => ea4, 200 BN1 => nb1, 201 BN2 => nb2, 202 BN3 => nb3, 203 BN4 => nb4, 204 BE1 => eb1, 205 BE2 => eb2, 206 BE3 => eb3, 207 BE4 => eb4, 208 ACCOUTA1 => ACCOUTA1, 209 ACCOUTA2 => ACCOUTA2, 210 ACCOUTA3 => ACCOUTA3, 211 ACCOUTA4 => ACCOUTA4, 212 ACCOUTB1 => ACCOUTB1, 213 ACCOUTB2 => ACCOUTB2, 214 ACCOUTB3 => ACCOUTB3, 215 ACCOUTB4 => ACCOUTB4 216 ); Inst_Compensador: Compensador PORT MAP( 220 CLK => clk, 221 CH_N => CH_N, 222 CH_S => CH_S, 223 CH_E => CH_E, 35
LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan
LABORG Parte 5 Projeto de um circuito digital de média complexidade Parte 2 Fernando Gehm Moraes Matheus Trevisan 0/maio/2015 Relógio de Xadrez 1. Em campeonatos, o xadrez é jogado usando um relógio. A
Leia maisVHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona
VHDL Lógica Síncrona Circuitos combinacionais respondem a estímulos com um atraso que depende de sua implementação Para sincronizar subsistemas em lógica combinacional utiliza-se barreiras temporais, que
Leia maisMódulo 4 Introdução ao VHDL
1 Módulo 4 Introdução ao VHDL Conceitos básicos do VHDL Modelação, Simulação e Síntese de Sistemas Digitais entity declara o interface de um componente; architecture descreve a realização de um componente;
Leia maisCMP238 Projeto e Teste de Sistemas VLSI
CMP238 Projeto e Teste de Sistemas VLSI Projeto Prof. Fernanda Gusmão de Lima Kastensmidt fglima@inf.ufrgs.br Conteúdo descrição lógica de alto nível (VHDL): componentes da plataforma como memória, contadores,
Leia maisSuporte de funcionamento e interacção com o teclado
Suporte de funcionamento e interacção com o teclado Autor: André Amaral Costa (nº 7578) Curso: Universidade de Aveiro Data: 6 de Dezembro de 006 Disciplina: Docente: Valery Sklyarov Introdução Neste trabalho
Leia maisImplementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete
- 1 - V 1.0 - De: 02/maio/2012 por Ney Calazans Laboratório de Organização de Computadores-EC V 3.2 - De: 21/abril/2013 por Fernando Gehm Moraes e Ney Calazans Implementação de um Sistema Digital em VHDL
Leia maisO diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão.
14 3.2 Projeto da Unidade de Controle (VHDL) 3.2.1 Diagrama ASM (Algorithmic State Machine) ASM é um fluxograma através do qual se representa a seqüência de ações que a unidade de controle de um sistema
Leia maisQuadro de consulta (solicitação do mestre)
Introdução ao protocolo MODBUS padrão RTU O Protocolo MODBUS foi criado no final dos anos 70 para comunicação entre controladores da MODICON. Por ser um dos primeiros protocolos com especificação aberta
Leia maisISE com VHDL estrutural
UFRJ - DEL EEL480-2014 Laboratório - Turmas EL1, EL2 ISE com VHDL estrutural Texto para as aulas de laboratório, a ser complementado pelo Tutorial dos Alunos e manuais da Xilinx UG331, UG334 e UG695. Mário
Leia maisFundamentos de sistemas digitais. Test-bench. prof. Dr. Edson Ifarraguirre Moreno
Fundamentos de sistemas digitais Test-bench prof. Dr. Edson Ifarraguirre Moreno 2 / 8 Validação por Simulação Utilizar um circuito de teste: test-bench Contém um circuito gerador de teste e uma instância
Leia maisFSM em VHDL e Verificação Funcional. CMP de junho de 2006
FSM em VHDL e Verificação Funcional CMP 238 20 de junho de 2006 Máquina de Estados: exemplo Reset= S0 S S3 X= S2 Descrição em VHDL library IEEE; use IEEE.STD_LOGIC_64.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
Leia maisUNIDADE I Aula 5 Fontes de Distorção de Sinais em Transmissão. Fonte: Rodrigo Semente
UNIDADE I Aula 5 Fontes de Distorção de Sinais em Transmissão Fonte: Rodrigo Semente A Distorção, em Sistemas de Comunicação, pode ser entendida como uma ação que tem como objetivo modificar as componentes
Leia mais1 Problemas de transmissão
1 Problemas de transmissão O sinal recebido pelo receptor pode diferir do sinal transmitido. No caso analógico há degradação da qualidade do sinal. No caso digital ocorrem erros de bit. Essas diferenças
Leia maisAo longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.
3 Tecnologia FPGA Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3.1. FPGA: Histórico, linguagens e blocos Muitos dos
Leia maisFAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO
FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO O Driver IGS possui um módulo de configuração que possibilita a comunicação com protocolos proprietários. Trata-se do Driver
Leia maisCircuitos Seqüenciais
Circuitos Seqüenciais Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva Circuitos Seqüenciais Um circuito seqüencial síncrono consiste de um circuito combinacional e uma rede de memória formada por
Leia maisExercícios de Fixação
Exercícios de Fixação Para entregar em 07/02/2013 Exercício I Implemente o circuito de seis portas lógicas abaixo em VHDL; Crie um projeto com o simulador Modelsim que contenha o par entidade-arquitetura
Leia maisIntrodução à Linguagem VHDL
Sistemas Digitais EEL 480 Introdução à Linguagem VHDL Luís Henrique M. K. Costa luish@gta.ufrj.br UFRJ DEL/Poli e PEE/COPPE P.O. Box 68504 - CEP 21941-972 - Rio de Janeiro - RJ Brasil - http://www.gta.ufrj.br
Leia maisOrganização e Arquitetura de Computadores II
Organização e Arquitetura de Computadores II Rômulo Calado Pantaleão Camara Romulo.camara@univasf.edu.br www.univasf.edu.br/~romulo.camara 60h/02h Disciplinas Correlacionadas Programação Org. e Arq. de
Leia maisLABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans
LABORG Parte 3 - VHDL: Processos, Paralelismo e o Comando process Fernando Gehm Moraes Ney Laert Vilar Calazans 31/março/2014 Sumário Ø Introdução Ø Processos em VHDL Ø TRABALHO A FAZER Ø A ENTREGAR 2
Leia mais1- Scilab e a placa Lab_Uino. 2- Instalação do ToolBox
1- Scilab e a placa Lab_Uino A placa Lab_Uino, é uma plataforma aberta para aprendizagem de sistemas microprocessados. Com a utilização de um firmware especifico a placa Lab_Uino é reconhecido pelo sistema
Leia maiswww.vwsolucoes.com Copyright 2013 VW Soluções
1 1. Especificação técnicas: Dimensões do módulo 4EA2SA v1.0: 100 mm x 56 mm Peso aproximado: xxx gramas (montada). Alimentação do circuito : 12 ou 24Vcc Tipo de comunicação: RS232 ou RS485 Tensão de referencia:
Leia maisLINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) 2823-8800 SÃO CAETANO DO SUL - SP - CEP: 09530-250
LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) 2823-8800 SÃO CAETANO DO SUL - SP - CEP: 09530-250 1 SISTEMA HCS 2005 PROTOCOLO DE COMUNICAÇÃO (Baseado no Guarita Vr5.0x Última modificação:
Leia mais2- Conceitos Básicos de Telecomunicações
Introdução às Telecomunicações 2- Conceitos Básicos de Telecomunicações Elementos de um Sistemas de Telecomunicações Capítulo 2 - Conceitos Básicos de Telecomunicações 2 1 A Fonte Equipamento que origina
Leia maisTIPO INTEGER. Profa. Luiza Maria Romeiro Codá 2
TIPO INTEGER 2 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FF3_tipoD_nivel IS PORT(CLK, RST, SET : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(2 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END FF3_tipoD_nivel;
Leia maisUFSM-CTISM. Comunicação de Dados Capacidade de canal Aula-12
UFSM-CTISM Comunicação de Dados Capacidade de canal Aula-12 Professor: Andrei Piccinini Legg Santa Maria, 2012 O pode ser definido como todo e qualquer tipo de interfência externa que exercida sobre um
Leia maisULA Sinais de Controle enviados pela UC
Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento
Leia maisCurso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase
Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia
Leia maisAula 8 Circuitos Integrados
INTRODUÇÃO À ENGENHRI DE COMPUTÇÃO PONTIFÍCI UNIVERSIDDE CTÓLIC DO RIO GRNDE DO SUL FCULDDE DE ENGENHRI ula Circuitos Integrados Introdução Portas Lógicas em Circuitos Integrados Implementação de Funções
Leia maisRegistradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva
Registradores Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva 2 Registradores Conjunto de elementos de memória (flip-flops ou latches) utilizados para armazenar n bits. Utilizam um único sinal de
Leia maisComunicações Digitais Manual do Aluno Capítulo 7 Workboard PCM e Análise de Link
Comunicações Digitais Manual do Aluno Capítulo 7 Workboard PCM e Análise de Link Laboratório de Telecomunicações - Aula Prática 4 Sub-turma: 3 Nomes dos alunos: Tarefa 17 Ruído em um Link Digital Objetivo:
Leia maisCircuitos Digitais 144L
Circuitos Digitais Notas de Aula - 02 INSTITUTO: CURSO: DISCIPLINA: Instituto de Ciências Exatas e Tecnologia Ciência da Computação e Sistemas de Informação Circuitos Digitais 144L 1.0 Circuitos Combinacionais.
Leia maisVHDL - VHSIC Hardware Description Language. Exemplo prático. Raiz Quadrada
VHDL - VHSIC Hardware Description Language Exemplo prático Raiz Quadrada Exemplo de um circuito completo Descrição de um circuito que realiza a raiz quadrada de um número natural; Obtenção de um modelo
Leia maisEletrônica Digital para Instrumentação
G4 Eletrônica Digital para Instrumentação Prof. Márcio Portes de Albuquerque (mpa@cbpf.br) Prof. Herman P. Lima Jr (hlima@cbpf.br) Centro Brasileiro de Pesquisas Físicas Ministério da Ciência e Tecnologia
Leia maisUniversidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação
Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Aula 5-P Processos em VHDL. Comandos de atribuição em VHDL:
Leia maisWATCHDOG ELITE NTC OPÇÃO DE COMUNICAÇÕES SERIAIS
WATCHDOG ELITE NTC OPÇÃO DE COMUNICAÇÕES SERIAIS O Watchdog é um equipamento complexo e realiza muitas funções. A função de comunicações é considerada uma função de baixa prioridade e por conta disso,
Leia maisLógica Reconfigurável
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA Lógica Reconfigurável - amauriassef@utfpr.edu.br
Leia maisO protocolo MODBUS define também o tipo diálogo entre os equipamentos, define por exemplo quem pode enviar dados e em que altura.
Universidade de Aveiro Departamento de Engenharia Mecânica Informática Industrial 2010/2011 5 PROTOCOLO DE COMUNICAÇÃO MODBUS 5.1 Protocolo de comunicação MODBUS Este protocolo foi proposto em 1979 pela
Leia maisGUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO
GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO Agosto/2004 V2 INTRODUÇÃO Este guia foi preparado para auxilio às aulas de laboratório para o curso de Engenharia
Leia maisEE210 Sistemas de Comunicação II 2ª Avaliação (PV2) 22/04/2015 15h30min Profs. Dayan A. Guimarães e Rausley A. A. de Souza. Aluno(a): Matrícula.
EE1 Sistemas de Comunicação II ª Avaliação (PV) /4/15 15h3min Profs. Dayan A. Guimarães e Rausley A. A. de Souza Nota : Nota P: Aluno(a): Matrícula. Prova sem consulta, com duração de 1h5min. A interpretação
Leia maisFabio Bento fbento@ifes.edu.br
Fabio Bento fbento@ifes.edu.br Eletrônica Digital Sistemas de Numeração e Códigos 1. Conversões de Binário para Decimal 2. Conversões de Decimal para Binário 3. Sistema de Numeração Hexadecimal 4. Código
Leia maisCurso de Modulação Digital de Sinais (parte 2)
Curso de Modulação Digital de Sinais (parte 2) Márcio Antônio Mathias Augusto Carlos Pavão IMT Instituto Mauá de Tecnologia. Introdução Dando prosseguimento à série Modulações digitais, discutiremos neste
Leia maisUNIVERSIDADE CATÓLICA DE PETRÓPOLIS CENTRO DE ENGENHARIA E COMPUTAÇÃO
UNIVERSIDADE CATÓLICA DE PETRÓPOLIS CENTRO DE ENGENHARIA E COMPUTAÇÃO Amanda 5ª Atividade: Codificador e codificação de linha e seu uso em transmissão digital Petrópolis, RJ 2012 Codificador: Um codoficador
Leia maisArquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
Leia maisEA773 - Experimento 5
EA773 - Experimento 5 Wu Shin - Ting DCA - FEEC - Unicamp 19 de Novembro de 2009 O projeto consiste em implementar uma calculadora com memória com uso de barramento de 8 bits. Neste documento são discutidos
Leia maisPorta Série. Trabalhos Práticos AM 2007/2008. Porta Série. Objectivos
3 Objectivos - Configurar os parâmetros associados à comunicação série assíncrona. - Saber implementar um mecanismo de menus para efectuar a entrada e saída de dados, utilizando como interface um terminal
Leia maisDisciplina de SSC Elementos de Lógica Digital II (Prática)
USP - ICMC - SSC SSC 0113 (Lab ELD II) - 2o. Semestre 2012 Disciplina de SSC0113 - Elementos de Lógica Digital II (Prática) 1 Prof. Fernando Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Estagiário
Leia maisMINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações CONTADORES. Marcos Moecke
MINISTÉRIO DA EDUCAÇÃO - Unidade de São José Curso Técnico em Telecomunicações CONTADORES Marcos Moecke São José - SC, 25 SUMÁRIO 5. CONTADORES... 5. CONTADORES ASSÍNCRONOS... CONTADOR ASSÍNCRONO CRESCENTE...
Leia maisFERRAMENTA DIDÁTICA PARA DISCIPLINA DE ELETRÔNICA DIGITAL
FERRAMENTA DIDÁTICA PARA DISCIPLINA DE ELETRÔNICA DIGITAL Diego S. Mageski diego.mageski@hotmail.com Bene R. Figueiredo bfigueiredo@ifes.edu.br Wagner T. da Costa wagnercosta@ifes.edu.br Instituto Federal
Leia maisDECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH
UNIVERSIDADE FEDERAL DO PARANÁ DEPARTAMENTO DE ENGENHARIA ELÉTRICA DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH Projeto para a matéria TE130 Projeto de Circuitos Integrados Digitais, ministrada pelo
Leia mais1 Transmissão digital em banda base
1 Transmissão digital em banda base A transmissão digital oferece algumas vantagens no que diz respeito ao tratamento do sinal, bem como oferecimento de serviços: Sinal pode ser verificado para avaliar
Leia mais4 CARACTERÍSTICA DE DESEMPENHO DE RECEPÇÃO
4 CARACTERÍSTICA DE DESEMPENHO DE RECEPÇÃO Este bloco de ensaios visa a avaliar as características dos sistemas de TV Digital ATSC, DVB-T e ISDB-T para recepção dos sinais. 4.1 Limiar da relação portadora
Leia maisDescreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA :
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMATICA LISTA DE EXERCÍCIOS DE SISTEMAS DIGITAIS Prof. Fernanda Gusmão de Lima Kastensmidt E Marcelo Porto (aluno mestrado PPGC) Descreva em VHDL,
Leia maisFunções de Posicionamento para Controle de Eixos
Funções de Posicionamento para Controle de Eixos Resumo Atualmente muitos Controladores Programáveis (CPs) classificados como de pequeno porte possuem, integrados em um único invólucro, uma densidade significativa
Leia maisApostila Básica sobre transmissão de TV Digital Padrão Brasileiro
1 Apostila Básica sobre transmissão de TV Digital Padrão Brasileiro Capitulo 1: Para começarmos a falar sobre TV Digital devemos conhecer os tipos de modulação digital que existem e entender, ao menos,
Leia maisArquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
Leia maisCurso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase
Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia
Leia maisFundamentos de Telecomunicações
Fundamentos de Telecomunicações Translação de Frequências A utilização eficaz de um canal de transmissão pode requerer por vezes a utilização de uma banda de frequências diferente da frequência original
Leia maiswww.vwsolucoes.com Copyright 2011 VW Soluções
1 Apresentação O adaptador ADP.v01 é utilizado para facilitar a instalação de display Lcd 16x2 ou display Lcd 20x4 nos CLP PIC28 ou CLP PIC40 através de um flat cable de 10vias de acordo com a necessidade
Leia maisDescrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas.
Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição estrutural: Descreve como é o hardware em termos de interconexão de componentes. Descrição
Leia maisTipos enumerados definem uma lista de valores, e são especialmente úteis na
Usando a palavra reservada TYPE é possível definir tipos personalizados. Por exemplo, pode-se definir tipos enumerados (Enumerated) e tipos compostos (Array). Tipos enumerados definem uma lista de valores,
Leia maisPROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS
1 PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS INTRODUÇÃO O processamento interno do CLP é digital e pode-se, assim, aplicar os conceitos de lógica digital para compreen8 der as técnicas e as linguagens
Leia maisA4 Projeto Integrador e Lista de Jogos
A4 Projeto Integrador e Lista de Jogos 1ª ETAPA PROJETO INTEGRADOR (2 pontos na A4) Como discutido em sala de aula, a disciplina de algoritmos I também fará parte do projeto integrador, para cada grupo
Leia maisArquitetura de Computadores I
Arquitetura de Computadores I Pipeline -- Conflito de dados paradas e adiantamentos -- Conflito de controle detecção de desvios e descarte de instruções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno
Leia maisCAPÍTULO 6 ARITMÉTICA DIGITAL
CAPÍTULO 6 ARITMÉTICA DIGITAL Introdução Números decimais Números binários positivos Adição Binária Números negativos Extensão do bit de sinal Adição e Subtração Overflow Aritmético Circuitos Aritméticos
Leia mais5 SIMULAÇÃO DE UM SISTEMA WDM DE DOIS CANAIS COM O SOFTWARE VPI
68 5 SIMULAÇÃO DE UM SISTEMA WDM DE DOIS CANAIS COM O SOFTWARE VPI O software VPI foi originalmente introduzido em 1998 e era conhecido como PDA (Photonic Design Automation). O VPI atualmente agrega os
Leia mais1 Moldando Pulso para reduzir a largura de banda
1 Moldando Pulso para reduzir a largura de banda Pulsos quadrados não são práticos. São difíceis de serem gerados e requerem grande largura de banda. Além disso, em razão da largura de banda limitada do
Leia maisLab 3. Timing Timing Constraints Simulação
Lab 3 Timing Timing Constraints Simulação A. Mariano - 2014 1 VHDL processes Para um designer, process é um bloco de instruções que funciona de maneira sequencial e que é chaveado quando algum dos sinais
Leia maisAMOSTRAGEM DE SINAIS ANALÓGICOS POR
Relatório de Sistemas de Aquisição de Dados 2006/2007 Engenharia Física Tecnológica AMOSTRAGEM DE SINAIS ANALÓGICOS POR UM CIRCUITO ADC COM INTERFACE DE COMUNICAÇÃO SÉRIE Laboratório II Trabalho realizado
Leia maislow): Descreve o que o sistema deve fazer utilizando expressões lógicas.
Descrição por fluxo de dados (Data Data-Flow low): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição estrutural: Descreve como é o hardware em termos de interconexão de componentes.
Leia maisPROJETO DE REDES www.projetoderedes.com.br
PROJETO DE REDES www.projetoderedes.com.br Curso de Tecnologia em Redes de Computadores Disciplina: Redes I Fundamentos - 1º Período Professor: José Maurício S. Pinheiro AULA 2: Transmissão de Dados 1.
Leia maisAula 2 Semântica de VHDL
VHDL - VHSIC Hardware Description Language Aula 2 Semântica de VHDL Leonardo Augusto Casillo Ivan Saraiva Silva 2003-2 Identificadores Usados como referência a todos os objetos declarados no código. Regras:
Leia maisSistemas Computacionais II Professor Frederico Sauer
Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não
Leia maisCONTROLE DIGITAL DE VOLUME 1.-----------------------------------------------------------------------------
CONTROLE DIGITAL DE VOLUME 1.----------------------------------------------------------------------------- Uma boa gama de aplicações atuais utiliza o controle de volume digital. Não nos referimos apenas
Leia maisComponentes do Computador e. aula 3. Profa. Débora Matos
Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e
Leia maisAula 14: Instruções e Seus Tipos
Aula 14: Instruções e Seus Tipos Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35 Conceitos Básicos Diego Passos
Leia maisTutorial de Matlab Francesco Franco
Tutorial de Matlab Francesco Franco Matlab é um pacote de software que facilita a inserção de matrizes e vetores, além de facilitar a manipulação deles. A interface segue uma linguagem que é projetada
Leia mais4. Tarefa 16 Introdução ao Ruído. Objetivo: Método: Capacitações: Módulo Necessário: Análise de PCM e de links 53-170
4. Tarefa 16 Introdução ao Ruído Objetivo: Método: Ao final desta Tarefa você: Estará familiarizado com o conceito de ruído. Será capaz de descrever o efeito do Ruído em um sistema de comunicações digitais.
Leia mais5 Entrada e Saída de Dados:
5 Entrada e Saída de Dados: 5.1 - Arquitetura de Entrada e Saída: O sistema de entrada e saída de dados é o responsável pela ligação do sistema computacional com o mundo externo. Através de dispositivos
Leia maisPipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.
O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline Todos os estágios devem estar prontos ao mesmo tempo para prosseguir O tempo requerido para mover uma instrução
Leia maisProjeto Dirigido: Genius
Projeto Dirigido: Genius Genius era um brinquedo muito popular na década de 80 e que buscava estimular a memorização de cores e sons. Com um formato semelhante a um objeto voador não identificado, possuía
Leia maisCódigos concatenados. Entrelaçamento. entrelaçadores de blocos. entrelaçadores convolucionais. Exemplos de códigos concatenados e entrelaçados
2.6. Códigos concatenados e entrelaçados Códigos concatenados Entrelaçamento entrelaçadores de blocos entrelaçadores convolucionais Exemplos de códigos concatenados e entrelaçados Entrelaçamento A maior
Leia maisO AMPLIFICADOR LOCK-IN
O AMPLIFICADOR LOCK-IN AUTORES: RAFAEL ASTUTO AROUCHE NUNES MARCELO PORTES DE ALBUQUERQUE MÁRCIO PORTES DE ALBUQUERQUE OUTUBRO 2007-1 - SUMÁRIO RESUMO... 3 INTRODUÇÃO... 4 PARTE I: O QUE É UM AMPLIFICADOR
Leia maisAULA 5 Aplicação com divisor de freqüência com o CI Livro Texto pág.197 a 200.
AULA 5 Aplicação com divisor de freqüência com o CI 74293. Livro Texto pág.197 a 200. 1. Contadores Assíncronos comerciais CI 74293. 1.1 Configuração Interna. 1.2 Bloco contador assincrono ou modulante,
Leia maisSímbolos Lógicos com Tabelas-Verdade
Slide 1 Símbolos Lógicos com Tabelas-Verdade PORTAS INVERSOR A NEG OR 6.071 Lógica Digital 1 A lógica digital pode ser descrita em termos de símbolos lógicos padrão e suas tabelas-verdade correspondentes.
Leia maisProjeto de Máquinas de Estado
Projeto de Máquinas de Estado Organizado por Rodrigo Hausen. Original de Thomas L. Floyd. Versão 0: 15 de março de 2013 http://compscinet.org/circuitos Resumo Grande parte deste texto, exemplos e estrutura
Leia maisLABORG. Parte 1 Introdução à Simulação em VHDL. Fernando Moraes e Ney Laert Vilar Calazans
LABORG Parte 1 Introdução à Simulação em VHDL Fernando Moraes e Ney Laert Vilar Calazans atualização - 05/agosto/2013 Mais informações sobre VHDL Web sites sobre VHDL e assuntos relacionados http://www.asic-world.com/vhdl/links.html
Leia mais- Arquitetura de sistemas digitais- Cap 1 - Introdução
- Arquitetura de sistemas digitais- Cap 1 - Introdução Prof. Alan Petrônio - www.ufsj.edu.br/alan - 2012 Conteúdos/propósitos deste capítulo: 1.1 - Relembrando conceitos 1.2 - Arquitetura de computadores
Leia maisAula 04. Código BCD, Códigos Alfa-numéricos e Sistemas de Detecção de Erros
Aula 04 Código BCD, Códigos Alfa-numéricos e Sistemas de Detecção de Erros Prof. Otávio Gomes otavio.gomes@ifmg.edu.br sites.google.com/a/ifmg.edu.br/otavio-gomes/ 1 Bytes A maioria dos microcomputadores
Leia maisMemória Cache. Prof. Leonardo Barreto Campos 1
Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.
Leia maisCALDsoft7 - Software de planificação em caldeiraria
CALDsoft7 - Software de planificação em caldeiraria Calculando uma peça com o CALDsoft7 É muito simples calcular uma peça com o CALDsoft7, basta seguir os passos apresentados abaixo: - Escolher a peça
Leia maisAula 2P - Comandos básicos do Matlab aplicados a PDS
Aula 2P - Comandos básicos do Matlab aplicados a PDS Bibliografia HAYKIN, S. S.; VAN VEEN, B. Sinais e sistemas, Bookman, 2001. ISBN 8573077417. Páginas 71-76. INGLE, V. K.; PROAKIS, J. G. Digital signal
Leia maisMultiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação
Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia
Leia mais2006, António Esteves, Sistemas Digitais 1, UM-DI. Módulo 6. Sistemas sequenciais
Módulo 6 Sistemas sequenciais 2 PA. Controlador de portão automático: enunciado O portão é deslocado por um motor, controlado pelos sinais Ma e Mf. Estes sinais nunca poderão estar activos simultaneamente
Leia maisContadores (Aula1) Prof. Rômulo Calado Pantaleão Camara
Contadores (Aula1) Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h Contadores Contadores (cont.) Os contadores podem ser classificados por: Tipo de controle - Assíncrono - Síncrono Tipo de contagem
Leia mais4 Arquitetura básica de um analisador de elementos de redes
4 Arquitetura básica de um analisador de elementos de redes Neste capítulo é apresentado o desenvolvimento de um dispositivo analisador de redes e de elementos de redes, utilizando tecnologia FPGA. Conforme
Leia maisProjetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.
Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações
Leia maisEletrônica Digital para Instrumentação. Prof: Herman Lima Jr
G03 Eletrônica Digital para Instrumentação Prof: hlima@cbpf.br Centro Brasileiro de Pesquisas Físicas Ministério da Ciência, Tecnologia e Inovação (MCTI) PACOTES (package) Entidades e Arquiteturas são
Leia maisSISTEMAS DIGITAIS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 8 - Antes de começar o estudo sobre decodificadores, o que é bastante semelhante ao que já vimos anteriormente é necessário relembrarmos alguns conceitos sobre códigos binários. 1. Códigos Binários
Leia maisCircuitos Sequenciais. Sistemas digitais
Circuitos Sequenciais Sistemas digitais Agenda } Introdução } Latchs (trava) } Latch NAND e Latch NOR } Flip-Flop Set-Reset (FF S-R) } FF S-R Latch NAND, FF S-R Latch NOR, FF S-R Latch NAND com Clock }
Leia mais