DLP29006-Engtelecom (Diário) - Prof. Marcos Moecke

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Registro on-line das aulas

Unidade 1 - Introdução a disciplina

  • 4 ENCONTROS
Unidade 1 - Introdução a disciplina
Encontro 1 (8 fev.)
  • APRESENTAÇÃO DA DISCIPLINA
  • Os materiais, prazos, documentação, histórico de trabalhos anteriores estão publicados nesta wiki.
  • A PÁGINA DA DISCIPLINA contem os materiais que não alteram entre semestre.
  • Nesta página está o REGISTRO DIÁRIO E AVALIAÇÕES.
  • Para a realização e entrega das atividades será utilizada a plataforma Moodle.
  • Para a comunicação entre professor-aluno, além dos avisos no SIGAA, utilizaremos o chat institucional. É necessário que forneçam o seu email institucional para serem cadastrados.
  • Para participar das aulas é recomendado que o aluno acesse a Nuvem do IFSC ou instale a VM com softwares Quartus II e Modelsim.
  • Introdução aos dispositivos lógicos programáveis:
  • Conceito, tipos de PLDs
  • SPLD: PAL, PLA e GAL
  • CPLDs
Exemplos de PLDs

Figura 1.1 - Macrobloco do PLD EP300 da ALTERA
Ep310 macrocell.jpg
Fonte: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html.

Figura 1.2 - Macrocélula dos PLDs Clássicos EP600, EP900, EP1800 da ALTERA (1999)
Macrocell EP900.png
Fonte: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf.

Figura 1.3a - Architetura do PLD EP1800 da ALTERA
Ep1800 block diagram.jpg
Fonte: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html.

Figura 1.3b - Architetura do PLD EP1800 da ALTERA
Ep1800 block diagram2.jpg
Fonte: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf.

Figura 1.5 - Pinagem e tipos de encapsulamento do PLD EP1800 da ALTERA
PackagePinOut EP1810.png
Fonte: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf.

Figura 1.6 - Architetura do CPLD MAX 5000 da ALTERA
Max 5000 architecture.jpg
Fonte: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html.
Encontro 2 (9 fev.)
  • Preços
  • Fabricantes de DLPs/FPGAs e familias de DLPs atuais.
  • Ver também:
Leituras complementares para a unidade
  • Historia, processo de produção dos chips.
Curiosidades do mundo digital
Encontro 3 e 4 (14 e 16 fev.)
Encontro 5 (23 fev.)
  • Arquitetura de FPGAs (Xilinx e Altera): CLB, LAB, RAM, DSP, Clock, PLL, I/O
Exemplos de FPGA

Figura 1.7 - Arquitetura simplificada de FPGA da Intel/Altera e Xilinx
ArquiteturaFPGAs.png
Fonte: [1] pag. 423.

Figura 1.8 - Diagrama simplificado da Slice L de um FPGA Xilinx
SliceL FPGAs.png
Fonte: [1] pag. 424.

Figura 1.9 - Diagrama simplificado da ALM de um FPGA Intel/Altera
ALM FPGAs.png
Fonte: [1] pag. 425.

Figura 1.10 - Leiaute de um FPGA Intel/Altera
Leiaute FPGAs.png
Fonte: [1] pag. 426.

Figura 1.11 - Leiaute de um FPGA Xilinx genérico
Leiaute2 FPGAs.jpg
Fonte: https://www.sciencedirect.com/science/article/pii/B9780750678667500032.

Figura 1.12 - Roteamento de sinal em um FPGA
Roteamento FPGAs.jpg
Fonte: https://www.sciencedirect.com/science/article/pii/B9780750678667500032.

Figura 1.13 - Tecnologias usadas na configuração de FPGAs
FPGA programming.png
Fonte: https://www.sciencedirect.com/topics/computer-science/one-time-programmable.
  • Ler pag. 413 a 431 de [1] ou pag. 495 a 501 de de [2].
  • O que é um Schmitt trigger?
  • O que é a JTAG?
Notícias recentes do mundo dos DLPs

Intel and Altera announced on June 1, 2015, that they had entered into a definitive agreement under which Intel would acquire Altera for $54 per share in an all-cash transaction valued at approximately $16.7 billion. The transaction closed December 28, 2015.

With the recent closing of its acquisition of electronic design automation (EDA) software leader, Mentor Graphics Corporation, Siemens sets out to underscore the significant customer value it envisions for both Electronic Systems and Integrated Circuit (IC) design tools. Mentor is now part of Siemens' product lifecycle management (PLM) software business, making the combined organization the world's leading supplier of industrial software used for product design, simulation, verification, testing and manufacturing. Siemens completes $4.5 billion purchase of Mentor Graphics [2].

AMD (NASDAQ: AMD) today (SANTA CLARA, Calif. 02/14/2022) announced the completion of its acquisition of Xilinx in an all-stock transaction. The acquisition, originally announced on October 27, 2020, creates the industry’s high-performance and adaptive computing leader with significantly expanded scale and the strongest portfolio of leadership computing, graphics and adaptive SoC products.
AMD said it has completed its $49 billion acquisition of Xilinx to create the “industry’s high-performance and adaptive computing leader,” marking the largest chip deal in history. With the acquisition, AMD is expanding beyond its purview of CPUs and GPUs with a large portfolio of reprogrammable chips called field programmable gate arrays, or FPGAs, that it said will significantly expand the company’s opportunities in data centers, embedded computing and telecommunications. Xilinx also has a footprint in other markets, like defense, broadcast and consumer electronics, which will help expand its total addressable market to $135 billion from $80 billion, according to AMD.

|}

Unidade 3 - Tipos de Dados e Operadores em VHDL

  • 8 Encontros
Unidade 3 - Tipos de Dados e Operadores em VHDL

Unidade 4 - Código Concorrente

  • 3 Encontros
Unidade 4 - Código Concorrente

Unidade 5 - Código Sequencial

  • 5 ENCONTROS
Unidade 5 - Código Sequencial

Unidade 6 - Projeto a nível de Sistema

  • 5 Encontros
Unidade 6 - Projeto a nível de Sistema

Unidade 7 - Maquinas de Estado Finitas

  • 2 AULAS
Unidade 7 - Maquinas de Estado Finitas

Unidade 8 - Testbench

Unidade 8 - Testbench
Aula 47 (8 dez.)
  • Simulação de sistemas digitais com Modelsim e testbench em VHDL
  • Tipos de simulação:
1) simulação funcional (usando o QSIM) com entrada gráfica e análise gráfica da saída - OK já visto desde CIL29003
2) simulação temporal (usando o QSIM) com entrada gráfica e análise gráfica da saída - OK já visto desde CIL29003
3) simulação funcional (usando o ModelSim) com entrada gráfica (gerado com comandos force) e análise gráfica da saída - OK já visto
4) simulação temporal (usando o ModelSim) com entrada gráfica (gerado com comandos force) e análise gráfica da saída - Não será visto
5) simulação funcional (usando o ModelSim) com entrada VHDL e análise gráfica da saída - Será visto nesta Unidade
6) simulação temporal (usando o ModelSim) com entrada VHDL e análise gráfica da saída - Será visto nesta Unidade
7) simulação funcional (usando o ModelSim e Matlab) com entrada VHDL e análise em VHDL da saída.
8) simulação temporal (usando o ModelSim e Matlab) com entrada VHDL e análise em VHDL da saída.
  • Para usar o ModelSim 2020.1 na CLOUD-IFSC(191.36.8.56) abra um terminal e digite:
/opt/intelFPGA/20.1/modelsim_ae/linuxaloem/vsim
Proposta do Exercício
  • Criar um testbench em VHDL para testar uma entity projetada em VHDL. Usar como exemplo o semáforo recém projetado.
  • O primeiro passo é abrir o projeto anteriormente simulado com um arquivo de script .do para criar uma nova simulação usando um testbench em VHDL.
  • Use o comando do Quartus para gerar um template para o testbench. Selecione a entity TOP LEVEL e após fazer a Analysis & Synthesis, selecione (Processing > Start > Start Test Bench Template Writer).
  • Neste passo será gerado um arquivo <nome>.vht dentro da pasta simulation/modelsim:
LIBRARY ieee;                                               
USE ieee.std_logic_1164.all;                                

ENTITY semaforo_vhd_tst IS
END semaforo_vhd_tst;
ARCHITECTURE semaforo_arch OF semaforo_vhd_tst IS
-- constants                                                 
-- signals                                                   
SIGNAL ativar : STD_LOGIC;
SIGNAL clk : STD_LOGIC;
SIGNAL lam1 : STD_LOGIC;
SIGNAL lam2 : STD_LOGIC;
SIGNAL lvd1 : STD_LOGIC;
SIGNAL lvd2 : STD_LOGIC;
SIGNAL lvm1 : STD_LOGIC;
SIGNAL lvm2 : STD_LOGIC;
SIGNAL rst : STD_LOGIC;
COMPONENT semaforo
	PORT (
	ativar : IN STD_LOGIC;
	clk : IN STD_LOGIC;
	lam1 : OUT STD_LOGIC;
	lam2 : OUT STD_LOGIC;
	lvd1 : OUT STD_LOGIC;
	lvd2 : OUT STD_LOGIC;
	lvm1 : OUT STD_LOGIC;
	lvm2 : OUT STD_LOGIC;
	rst : IN STD_LOGIC
	);
END COMPONENT;
BEGIN
	i1 : semaforo
	PORT MAP (
-- list connections between master ports and signals
	ativar => ativar,
	clk => clk,
	lam1 => lam1,
	lam2 => lam2,
	lvd1 => lvd1,
	lvd2 => lvd2,
	lvm1 => lvm1,
	lvm2 => lvm2,
	rst => rst
	);
init : PROCESS                                               
-- variable declarations                                     
BEGIN                                                        
        -- code that executes only once                      
WAIT;                                                       
END PROCESS init;                                           
always : PROCESS                                              
-- optional sensitivity list                                  
-- (        )                                                 
-- variable declarations                                      
BEGIN                                                         
        -- code executes for every event on sensitivity list  
WAIT;                                                        
END PROCESS always;                                          
END semaforo_arch;
  • Note que a entity desse testbench não possui nem parâmetros genéricos (generic) nem portas de entrada ou saída (port), pois o objetivo dela é encapsular o dispositivo sob testes (Device Under Test (DUT)), no caso a entity semaforo.
  • Esse testbench será usado para gerar os estímulos necessários para a simulação desse DUT, o qual já está declarado e instanciado como um componente dentro da entity semaforo_vhd_tst. No template gerado, também são gerados sinais (signal) para conectar a cada uma das portas de entrada e saída do DUT.
  • Logo após da instanciação do DUT, estão dois esboços de process, os quais são usados para realizar a simulação, conforme indicado a seguir.
  • Usaremos como base para criar os estímulos o script tb_semaforo.do
vcom -93 -work work {../../semaforo.vhd}
vsim work.semaforo
do wave_curto.do
force -freeze sim:/semaforo/rst 1 0, 0 10
force -freeze sim:/semaforo/clk 1 0, 0 {0.5sec} -r 1sec
force -freeze sim:/semaforo/ativar 0 0, 1 10.3sec, 0 55.5sec, 1 70sec, 0 106.22sec, 1 120sec
run 150sec
  • Exemplos de criação de sinais para testbench em VHDL
Geração de sinal de clock
-- DECLARAR
constant tclk: time := 1 ns;
signal clk   : std_logic := '0';

-- CLOCK COM PERIODO DE 2*tclk (COM CÓDIGO CONCORRENTE)
clk <= not clk after tclk;

-- CLOCK COM PERIODO DE 2*tclk (COM CÓDIGO SEQUENCIAL)
PROCESS                                              
BEGIN  
  clk <= '1';
  wait for tclk;
  clk <= '0';
  wait for tclk;
END PROCESS;
Geração de sinal de reset
-- DECLARAR
constant treset: time := 100 ps;
signal reset   : std_logic;

-- RESET COM DURAÇÃO DE treset (COM CÓDIGO CONCORRENTE)
reset <= '1', '0' after treset;

-- RESET COM DURAÇÃO DE treset (COM CÓDIGO SEQUENCIAL)
PROCESS                                              
BEGIN  
  reset <= '1';
  wait for treset;
  reset <= '0';
  wait;
END PROCESS;
Geração de uma sequência binária
-- DECLARAR
constant t_a: time := 100 ps;
constant Nbits: natural := 8;
signal a  : std_logic_vector(Nbits-1 downto 0);

-- GERAÇÂO DO SINAL a = [0 1 2 3 4 ...] COM DURAÇÃO DE t_a em cada valor (COM CÓDIGO SEQUENCIAL)
PROCESS                                              
BEGIN  
	for i in 0 to 2**Nbits-1 loop
		a <= std_logic_vector(to_unsigned(i,Nbits));
		wait for t_a;
	end loop;
END PROCESS;
Geração de uma sequência pseudoaleatória

No exemplo abaixo é utilizado um tipo de Linear-feedback shift register

-- DECLARAR
constant t_a: time := 100 ps;
constant Nbits: natural := 8;
signal a  : std_logic_vector(Nbits-1 downto 0) := (0 => '1', 3 => '1', others => '0');

-- GERAÇÂO DO SINAL a COM DURAÇÃO DE t_a em cada valor (COM CÓDIGO SEQUENCIAL)
-- USANDO UM CONTADOR LFSR
PROCESS                                              
BEGIN  
	for i in 0 to 2**Nbits-1 loop
		a <= (a(0) xor a(2) xor a(3) xor a(4)) & a(Nbits-1 downto 1);  -- para 8 bits
		wait for t_a;
	end loop;
END PROCESS;
  • Após a criação do testbench, o projeto terá os arquivos semaforo.vhd e, semaforo.vht, os quais serão utilizados no Modelsim para realizar a simulação.
  • Para facilitar a simulação no Modelsim recomenda-se criar também os arquivos de script tb_semaforo.do.


-->

Avaliações

Nas avaliações A1 e A2 serão realizadas de forma presencial e vocês poderão consultar apenas as folhas entregues:

Dica use também como fonte de consulta os templates do Quartus.
Ao final das avaliações o aluno deverá enviar a avaliação para a plataforma Moodle com os arquivos solicitados.
Data das avaliações
  • A1 - Unidade 1 a Unidade 4: dia 1/11
  • A2 - Unidade 5 a Unidade 7: dia XX/12
  • PF - Projeto Final: dia 13/12
  • R12 - Recuperação A1 e A2 : dia 15/12


Atividade relâmpago (AR)

As atividades relâmpago devem ser entregues no Moodle da disciplina. Elas geram BÔNUS que são adicionados aos conceitos das avaliações A1 e A2.


Atividade extra-classe (AE)

A soma das atividades Extra-classe será correspondente a 20% do conceito final na disciplina. A entrega das mesmas será feita pelo Moodle, e cada dia de atraso irá descontar 0,2 na nota da atividade. Muitas dessas atividades também possuem BÔNUS que são adicionados aos conceitos das avaliações A1 e A2. Para os BÔNUS só serão considerados projetos entregues no prazo.

AE1 - Palavras-cruzadas INTRODUÇÃO

AE1 - Palavras-cruzadas INTRODUÇÃO

AE2 - Conhecendo os dispositivos lógicos programáveis

AE2 - Conhecendo os dispositivos lógicos programáveis
Objetivos
  • Conhecer o Quartus II e as características dos dispositivos lógicos programáveis
  • Analisar os tempos de propagação em um circuito combinacional
  • Alterar configurações do compilador
  • Fazer a simulação funcional e temporal de um circuito combinacional.
Atividade
  • Ao escolher a família de FPGAS, escolha inicialmente um dispositivo da família Cyclone II, ou Max II. Anote o código desse dispositivo.
  • Capture as telas solicitadas e depois utilize-as no relatório da atividade.
  • Anote o tempo utilizado para cada uma das etapas do processo de compilação.
  • Anote o número de elementos lógicos utilizados e o número de pinos utilizados, bem com o percentual em relação ao número total do dispositivo.
  • Anote algum erro (Error) ou alertas (Warnings) que o Quartus II indicar no painel de mensagens [Messages]
  • Ao final salve o projeto em um arquivo QAR (sugestão PJ1.QAR)
  • PASSO 2: Repita a atividade descrita em Conhecendo os dispositivos lógicos programáveis, trocando a família e dispositivo a ser usado na implementação. Escolha nesta vez um dispositivos da família Cyclone IV E ou Stratix II GX. Anote o código desse dispositivo.
  • Observe as mudanças que ocorrem tanto no tipo de Elemento Lógico disponível, no Chip Planner, no Pin Planner, e no circuito dos pinos de I/O. Note que estes FPGAs também apresenta novos componentes, tais como: Memória, Multiplicadores, DSP, PLL, DLL, etc. Verifique se consegue encontra-los no leiaute mostrado no Chip Planner, e documente aqueles que encontrar.
  • Compare os resultados obtidos nos procedimentos do PASSO 1 e PASSO 2.
  • Ao escolher a família de FPGAS, escolha um dispositivo FPGA da família Cyclone IV E. Anote o código desse dispositivo.
  • Capture as telas mostradas no roteiro e depois utilize-as no relatório da atividade.
  • Anote o máximo tempo de propagação entre entrada e saída.
  • Anote o número de elementos lógicos utilizados e o número de pinos utilizados, bem com o percentual em relação ao número total do dispositivo.
  • Experimente modificar as configurações do compilador, conforme mostrado em Configurando o compilador. Se desejar mude a semente inicial trocando o valor de [Seed: 1]
  • Experimente inserir diferentes restrições de atraso máximo para o compilador, e analise o resultado obtido.
  • Anote algum erro (Error) ou alertas (Warnings) que o Quartus II indicar no painel de mensagens [Messages]
  • Ao final salve o projeto em um arquivo QAR (sugestão PJ2.QAR)
  • PASSO 4: Realize a simulação funcional e também a temporal de um dos projetos CI74161 ou do cálculo da distância de Hamming

ATENÇÃO: Se está com problemas com a simulação funcional, veja esta página Quartus Prime QSIM problems

  • Capture as telas que mostram o circuito funcionando e depois utilize-as no relatório da atividade.
Entregas
  1. Envie um arquivo QAR contendo todos os arquivos necessário para compilar cada um dos projetos.
  2. Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório.
  3. Use preferencialmente o Overleaf para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida.
  4. A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega.
  1. 1,0 1,1 1,2 1,3 1,4 PEDRONI, Volnei A. Eletrônica digital moderna e VHDL; 1ª ed. Rio de Janeiro:Elsevier, 2010. 619p. . ISBN 9788535234657
  2. PEDRONI, Volnei A. Circuit Design and Simulation with VHDL; 2ª ed. Massachusetts-EUA:MIT, 2010. 608 p. ISBN 9780262014335