Mudanças entre as edições de "DLP29006-Engtelecom(2018-1) - Prof. Marcos Moecke"
Ir para navegação
Ir para pesquisar
(→ATUAL) |
(→ATUAL) |
||
Linha 474: | Linha 474: | ||
:* Operadores predefinidos: Atribuição, Lógicos, Aritméticos, Comparação, Deslocamento, Concatenação, "Matching". | :* Operadores predefinidos: Atribuição, Lógicos, Aritméticos, Comparação, Deslocamento, Concatenação, "Matching". | ||
:* Sobrecarga de operadores | :* Sobrecarga de operadores | ||
− | : | + | |
+ | {{collapse top | Conversor de Binário para BCD}} | ||
+ | *Considere um número decimal entre 000 e 999. Usando operadores predefinidos, obtenha na saída os dígitos decimais separados. | ||
+ | :*Escreva o código VHDL e analise o número de elementos lógicos necessários. | ||
+ | :*Faça a simulação funcional do circuito. | ||
+ | <center> [[Arquivo:tb_bin2bcd.jpg]]<br> '''Fig. 20 - Simulação da conversão de binário para BCD''' </center> | ||
+ | :*Compare sua implementação com os outros estudantes e analise as diferenças, observe o código RTL, o número de elementos lógicos e também o tempo de propagação. | ||
+ | ::Para separar os dígitos decimais do número de entrada pense nos operadores de "+", "-", "*", "/", "REM" e "MOD", shift. | ||
+ | ::Para facilitar os testes e a troca de informações entre as equipes, a ENTITY deverá ter o seguinte formato: | ||
+ | <syntaxhighlight lang=vhdl> | ||
+ | entity bin2bcd is | ||
+ | port ( | ||
+ | X_bin : in std_logic_vector(13 downto 0); -- 000 a 999 | ||
+ | C_bcd : out std_logic_vector(3 downto 0); -- Centena | ||
+ | D_bcd : out std_logic_vector(3 downto 0); -- Dezena | ||
+ | U_bcd : out std_logic_vector(3 downto 0)); -- Unidade | ||
+ | |||
+ | end entity; | ||
+ | |||
+ | architecture example of bin2bcd is | ||
+ | --declaração de sinais auxiliares | ||
+ | |||
+ | begin | ||
+ | --descrição do hardware | ||
+ | |||
+ | end architecture; | ||
+ | </syntaxhighlight> | ||
+ | :: Note que com ''X_bin'' 10 bits é possível representar números sem sinal entre ''0'' e <math> 2^{10}-1 </math>. No entanto, os testes devem ser limitados a números entre 000 e 999, pois não há especificação para valores maiores que 999. | ||
+ | :: Existe um algoritmo [https://en.wikipedia.org/wiki/Double_dabble Double Dabble] que possibilita fazer essa conversão com menos hardware. | ||
+ | ::Dica para converter de INTEGER para STD_LOGIC_VECTOR de 4 bits. | ||
+ | M_bcd <= std_logic_vector(to_unsigned(M,4)); | ||
+ | {{collapse bottom}} | ||
+ | |||
*Atributos em VHDL. | *Atributos em VHDL. | ||
:* Atributos predefinidos: tipo escalar e enumerados; tipo array; de sinal; | :* Atributos predefinidos: tipo escalar e enumerados; tipo array; de sinal; |
Edição das 15h42min de 21 de março de 2018
MURAL DE AVISOS E OPORTUNIDADES DA ÁREA DE TELECOMUNICAÇÕES
Registro on-line das aulas
Unidade 2 - Introdução ao VHDL e ambienta EDA - QUARTUS |
---|
Unidade 2 - Introdução ao VHDL e ambienta EDA - QUARTUS
library library_name; use library_name.package)name.all;
entity entity_name is [generic ( cons_name1: const_type const_value; cons_name2: const_type const_value; ... cons_nameN: const_type const_value);] [port ( signal_name1: mode signal_type; signal_name2: mode signal_type; ... signal_nameN: mode signal_type);] [declarative_part] [begin statement_part] end [entity] [entity_name];
architecture arch_name of entity_name is [declarative_part] begin statement_part end [architecture] [arch_name];
library std;
use std.standard.all;
entity nand_gate is
port (a, b: in bit; x: out bit);
end entity;
architecture nome_arch of nand_gate is
begin
x <= a nand b;
end architecture;
-- Declaração das bibliotecas e pacotes
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Especificação de todas as entradas e saídas do circuito
ENTITY flip_flop IS
PORT (d, clk, rst: IN STD_LOGIC;
q: OUT STD_LOGIC);
END;
-- Descrição de como o circuito deve funcionar
ARCHITECTURE flip_flop OF flip_flop IS
BEGIN
PROCESS (clk, rst)
BEGIN
IF (rst='1') THEN
q <= '0';
ELSIF (clk'EVENT AND clk='1') THEN
q <= d;
END IF;
END PROCESS;
END;
ls /opt/altera/13.0sp1/quartus/libraries/vhdl/std
ls /opt/altera/13.0sp1/quartus/libraries/vhdl/ieee
ls /opt/altera/13.0sp1/quartus/libraries/vhdl/mentor/arithmetic (Mentor Graphics) ls /opt/altera/13.0sp1/quartus/libraries/vhdl/synopsys/ieee (Synopsys)
ls /opt/altera/16.0/quartus/libraries/vhdl/ieee/2008
Note que na simulação funcional a mudança da saída Q ocorre no instante em que ocorre a borda de subida do clock ou no momento do reset. No entanto, no caso da simulação com timing, existe um atraso de ~6ns nestas mudanças. IMPORTANTE: Na prática normalmente não é necessário fazer a simulação temporal, pois através do Time Quest Report é possivel verificar se o circuito atende as restrições de tempo.
create_clock -name CLK50MHz -period 50MHz [get_ports {*}]
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY registered_comp_add IS
PORT (clk: IN STD_LOGIC;
a, b: IN INTEGER RANGE 0 TO 7;
reg_comp: OUT STD_LOGIC;
reg_sum: OUT INTEGER RANGE 0 TO 15);
END;
ARCHITECTURE circuit OF registered_comp_add IS
SIGNAL comp: STD_LOGIC;
SIGNAL sum: INTEGER RANGE 0 TO 15;
BEGIN
comp <= '1' WHEN a>b ELSE '0';
sum <= a + b;
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN
reg_comp <= comp;
reg_sum <= sum;
END IF;
END PROCESS;
END;
|
Unidade 3 - Tipos de Dados e Operadores em VHDL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Unidade 3 - Tipos de Dados e Operadores em VHDL
package standard is
type boolean is (false,true);
type bit is ('0', '1');
type severity_level is (note, warning, error, failure);
type integer is range -2147483647 to 2147483647;
type real is range -1.0E308 to 1.0E308;
type time is range -2147483648 to 2147483647
units
fs;
ps = 1000 fs;
ns = 1000 ps;
us = 1000 ns;
ms = 1000 us;
sec = 1000 ms;
min = 60 sec;
hr = 60 min;
end units;
subtype natural is integer range 0 to integer'high;
subtype positive is integer range 1 to integer'high;
type string is array (positive range <>) of character;
type bit_vector is array (natural range <>) of bit;
PACKAGE std_logic_1164 IS
TYPE std_ulogic IS ( 'U', -- Uninitialized
'X', -- Forcing Unknown
'0', -- Forcing 0
'1', -- Forcing 1
'Z', -- High Impedance
'W', -- Weak Unknown
'L', -- Weak 0
'H', -- Weak 1
'-' -- Don't care
);
TYPE std_ulogic_vector IS ARRAY ( NATURAL RANGE <> ) OF std_ulogic;
SUBTYPE std_logic IS resolved std_ulogic;
TYPE std_logic_vector IS ARRAY ( NATURAL RANGE <>) OF std_logic;
x = "1----" -- não funciona em VHDL
std_match(x, "1----") -- funciona em VHDL
Ver pag. 60 a 73 de [2]
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY operadores IS
PORT (
a, b: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
mult: OUT STD_LOGIC_VECTOR(? DOWNTO 0);
div: OUT STD_LOGIC_VECTOR(? DOWNTO 0);
sum: OUT STD_LOGIC_VECTOR(? DOWNTO 0);
sub: OUT STD_LOGIC_VECTOR(? DOWNTO 0);
);
END ENTITY;
ARCHITECTURE type_conv_arch OF operadores IS
BEGIN
-- Inserir o código e definir o tamanho das saidas.
END ARCHITECTURE;
ATUAL
|
Avaliações
- Avaliação A1 - Unidade 2 a 4 (XX/XX/2018) - Local: Lab Redes II.
- Avaliação A2 - Unidade 5 a 7 (XX/XX/2018) - Local: Lab Redes II.
- As avaliações A1 e A2 são com consulta apenas as folhas de consulta entregues VHDL QUICK REFERENCE CARD e VHDL 1164 PACKAGES QUICK REFERENCE CARD, e as tabelas das figuras 3.6, 3.10 e 4.1 do livro do Pedroni. Dica use também como fonte de consulta os templates do Quartus.
- Recuperação R1-2 - Unidade 2 a 7 (XX/XX/2018) - Local: Lab Redes II.
- Ao final das avaliações o aluno deverá enviar a avaliação para a plataforma moodle ou email moecke AT ifsc.edu.br com os arquivos solicitados.
- Entrega dos Atividades Extraclasse ao longo do semestre AE0 a AE(N). A entrega, detalhes e prazos de cada AE serão indicados na plataforma Moodle
ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO
Os exemplos e exercícios essenciais estão destacados em negrito na listagens abaixo.
Referências Bibliográficas: