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

  • 6 ENCONTROS
Unidade 1 - Introdução a disciplina
Encontro 1 (8 fev.)
  • 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.

Unidade 2 - Introdução ao VHDL e ambienta EDA - QUARTUS

  • 10 ENCONTROS
Unidade 2 - Introdução ao VHDL e ambienta EDA - QUARTUS

Unidade 3 - Tipos de Dados e Operadores em VHDL

  • 10 ENCONTROS
Unidade 3 - Tipos de Dados e Operadores em VHDL

Unidade 4 - Código Concorrente

  • 4 ENCONTROS
Unidade 4 - Código Concorrente

Unidade 5 - Código Sequencial

  • 7 ENCONTROS
Unidade 5 - Código Sequencial

Unidade 6 - Projeto a nível de Sistema

  • 3 ENCONTROS
Unidade 6 - Projeto a nível de Sistema

Unidade 7 - Maquinas de Estado Finitas

  • 2 AULAS
Unidade 7 - Maquinas de Estado Finitas
Encontro 40 (7 jun.)
  • O que é uma FSM - Finite State Machine

Figura 7.1 - Exemplo de diagrama de estados de uma FSM Fig11.1(a) e implementação em hardware da FSM Fig11.2(a)
Fig11 1 FSM.png
Fonte: Figura 11.1 e 11.2 de [1].
  • Modelo básico em VHDL de FSM
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
----------------------------------------------------------
ENTITY < entity_name > IS
PORT (
	clk, rst : IN STD_LOGIC;
	entradas : IN < data_type > ;
	saidas : OUT < data_type >);
END entity;
----------------------------------------------------------
ARCHITECTURE < architecture_name > OF < entity_name > IS
	TYPE state IS (A, B, C, ...);
	SIGNAL pr_state, nx_state : state;
	-- ATTRIBUTE ENUM_ENCODING : STRING; --optional attribute
	-- ATTRIBUTE ENUM_ENCODING OF state : TYPE IS "sequential";
	-- ATTRIBUTE SYN_ENCODING OF state : TYPE IS "safe";
BEGIN
	------Logica Sequencial da FSM:------------
	PROCESS (clk, rst)
	BEGIN
		IF (rst = '1') THEN
			pr_state <= A;
		ELSIF rising_edge(clk) THEN
			-- apenas na borda do "clk" ocorre a mudança de estado da FSM
			pr_state <= nx_state;
		END IF;
	END PROCESS;
	------Logica Combinacional da FSM:------------
	PROCESS (pr_state, entradas)
	BEGIN
		------Valores default das saidas------------
                saidas <= < valor > ;
		CASE pr_state IS
			WHEN A =>
				-- é necessário um  WHEN para definir as "saidas" durante cada estado 
				-- e analisar as "entradas" para definir o próximo estado
				saidas <= < valor > ;   -- apenas se diferente do valor default
				IF (entradas = < valor >) THEN
					nx_state <= B;
					...
				ELSE
					nx_state <= A;
				END IF;
			WHEN B =>
				saidas <= < valor > ; -- apenas se diferente do valor default
				-- dependendo das "entradas", pode ser que hajam mais de um estados de destino
				IF (entradas = < valor >) THEN
					nx_state <= C;
				ELSIF (entradas = < valor >) THEN
					nx_state <= A;
				ELSE
					nx_state <= B;
				END IF;
			WHEN C =>
				saidas <= < valor > ; -- apenas se diferente do valor default
				-- a passagem para outro estado pode não depender de nenhuma "entrada"
				nx_state <= C;
			WHEN ...


		END CASE;
	END PROCESS;
	------Seção de Saída (opcional):-------
	-- Essa seção visa garantir que a saida new_output esteja sincronizada com o clk.  
	-- Se isso não for importante, ela pode ser suprimida
	PROCESS (clk, rst)
	BEGIN
		IF (rst = '1') THEN
			new_output <= < valor > ;
		ELSIF rising_edge(clk) THEN --or falling_edge(clk)
			new_output <= output;
		END IF;
	END PROCESS;
END architecture;
  • Usando o template acima descreva em VHDL a FSM indicada na Figura 11.1.
  • Faça a simulação da FSM com Modelsim utilizando um testbench em VHDL que faça a FSM seguir os estados
rst -> A -(x=0)-> A -(x=1)-> A -(x=2)-> B -(x=2)-> B -(x=0)-> C -(x=0)-> C -(x=2)-> C -(x=1)-> A -(x=2)-> B -(x=1)-> A.
Ver pag. 277 a 280 de [1]
Ver Quartus II Handbook Version 13.1: Manually Specifying Enumerated Types Using the enum_encoding Attribute, pag 16-37 sobre a atribuição manual do enum_encoding.
Note que o uso desse atributo faz com que o compilar do Quartus não reconheça a FSM, mas use logica regular para representar o sistema.
Ver Quartus II Handbook Version 13.1: Safe State Machines, pag 16-38.
Encontro 41 (13 jun.)
  • Introdução ao Projeto de Maquinas de Estado Finitas (FSM) em VHDL
  • Máquina de vender doces
  • Use o template da FSM para modelar o sistema mostrado na figurar a seguir.

Figura 7.2 - FSM - Máquina de vender doces (diagrama de estados)
FSM MVD.png
Fonte: Adaptado da Figura 11.3 de [1].

Figura 7.3 - FSM - Máquina de vender doces (diagrama de estados com default
FSM MVD default.png
Fonte: Elaborado pelo autor.
  • Simule a FSM com Modelsim utilizando um testbench em VHDL para gerar o teste mostrado na figura abaixo.

Figura 7.4 - FSM - Máquina de vender doces (simulação)
FSM tb40.png
Fonte: Elaborado pelo autor.
  • Exercício: Altere a FSM para vender doces que custam 30 centavos. Considere que as moedas aceitas são 5, 10, 25 e 50 centavos. Desenho primeiro a FSM e em seguida implemente-a em VHDL e faça a simulação.
Ver pag. 281 a 282 de [1]
Dica: para desenhar a FSM recomendo utilizar um software on-line para tal finalidade. Por Ex. Visual Paradigm.
  • O problema de oscilando entre os estados em FSM.

Figura 7.5 - FSM - alarme (oscilando entre os estados quando remoto é 1)
Alarme erro.png
Fonte: Adaptado de Figura 11.9(a) de [1].
  • Solução através do uso de FLAG

Figura 7.6 - FSM - alarme (solução com flag)
Alarme flag.png
Fonte: Adaptado de Figura 11.9(b) de [1].
  • Solução através do uso de estados de WAIT adicionais.

Figura 7.7 - FSM - alarme (solução com estados de WAIT)
Alarme wait.png
Fonte: Adaptado de Figura 11.9(c) de [1].

Figura 7.8 - Simulação da FSM - alarme (solução com estados de WAIT)
Simulation alarme wait.png
Fonte: Elaborado pelo autor.
Ver pag. 292 a 297 de [1]
  • Exercício: Faça o download do arquivo simple_car_alarm.qar, disponível no Moodle da disciplina e realize as seguintes avaliações:
  1. Perceba que existem 4 versões para o mesmo Alarme de Carro. Realize a simulação no ModelSim das 4 versões e perceba qual é a diferença de funcionamento desses circuitos.
  2. Anote o número de elementos em cada versão.
  3. Qual versão é a mais adequada na sua opinião?
  4. Modifique a sua escolha para que o alarme não possa ser ativado se o "sensor" estiver em "1".
  5. Analise o arquivo tb_vX.do e modifique-o para testar também essa nova condição. A simulação deve obrigatoriamente fazer o sistema passar por todos os estados e todas as transições.
  6. Implemente a nova versão como uma nova arquitetura "fsm_v5", e escrever o arquivo de simulação "tbv5.do".
  7. Salve as telas da simulação ("v5_sim.png"), tela da fsm ("v5_fsm.png"), tela do RTL ("v5_rtl.png").
  8. Acrescente os novos arquivos no projeto e salve o novo .qar
Encontro 42 (14 jun.)
  • Projeto de FSM temporizadas (nas quais as transições são ativadas também pelo tempo).

Figura 7.9 - Tipos de FSM (Condicional, Temporizada e Hibrida)
FSM type.png
Fonte: Figura 11.12 de [1].
  • Modelo de FSM temporizada
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
----------------------------------------------------------
ENTITY < entity_name > IS
PORT (
	clk, rst : IN STD_LOGIC;
	input : IN < data_type > ;
	output : OUT < data_type >);
END entity;
----------------------------------------------------------
ARCHITECTURE < architecture_name > OF < entity_name > IS
	TYPE state IS (A, B, C, ...);
	SIGNAL pr_state, nx_state : state;
        signal timer: integer range 0 to MAX;
--	ATTRIBUTE ENUM_ENCODING : STRING; --optional attribute
--	ATTRIBUTE ENUM_ENCODING OF state : TYPE IS "sequential";
BEGIN
	------Logica Sequencial da FSM:------------
	PROCESS (clk, rst)
		variable count: integer range o to MAX;
	BEGIN
		IF (rst = '1') THEN
			pr_state <= A;
			count := 0;
		ELSIF (clk'EVENT AND clk = '1') THEN
			count := count + 1;
			if (count >= timer) then
				pr_state <= nx_state;
				count := 0;
			end if;
		END IF;
	END PROCESS;
	------Logica Combinacional da FSM:------------
	PROCESS (pr_state, input)
	BEGIN
                ------Valores default das saidas------------
                output <= < value >;
                ------Valores default do timer------------
		timer <= <value>;
		CASE pr_state IS
			WHEN A =>
				output <= < value > ;   -- apenas se diferente do valor default
				IF (input =< value >) THEN
					timer <= <value>;  -- apenas se diferente do valor default
					nx_state <= B;
					...
				ELSE
					timer <= <value>; -- apenas se diferente do valor default
					nx_state <= A;
				END IF;
			WHEN B =>
				output <= < value > ; -- apenas se diferente do valor default
				IF (input =< value >) THEN
					timer <= <value>;  -- apenas se diferente do valor default
					nx_state <= C;
					...
				ELSE
					timer <= <value>;  -- apenas se diferente do valor default
					nx_state <= B;
				END IF;
			WHEN ...
		END CASE;
	END PROCESS;
	------Seção de Saída (opcional):-------
	PROCESS (clk, rst)
	BEGIN
		IF (rst = '1') THEN
			new_output <= < value > ;
		ELSIF (clk'EVENT AND clk = '1') THEN --or clk='0'
			new_output <= output;
		END IF;
	END PROCESS;
END architecture;
Ver pag. 298 a 301 de [1]
Exemplo de FSM temporizada - semáforo temporizado
  • Usando o template acima descreva em VHDL a FSM de um controlador de semáforo Regular indicado pela FSM da figura abaixo:

Figura 7.10 - Diagrama de estados do controlador de semáforo
Semaforo FSM v2.png
Fonte: Elaborado pelo autor.

Figura 7.11 - Simulação do controlador de semáforo no Modelsim
Semaforo FSM v2 ModelSim.png
Fonte: Elaborado pelo autor.


Exercício - Semaforo
  • Usando o template acima descreva em VHDL a FSM de um controlador de semáforo Regular da Figura 11.15 (pag. 304 de [1]).

Figura 7.12 - Diagrama de estados do controlador de semáforo
Semaforo FSM VD.png
Fonte: Adaptado de Figura 11.15 de [1].

Figura 7.13 - Diagrama de estados do Quartus do controlador de semáforo
Semaforo FSM.png
Fonte: Elaborado pelo autor.
  • Para definir as temporizações utilize GENERICs que permitam instanciar diferentes semáforos em um projeto de controle de tráfego de uma avenida.
Para uma instância do semáforo S1 use (timeRY = 2 segundos; timeGR = 40 segundos; timeYR = 2 segundos; timeRG = 15 segundos.
Para uma instância do semáforo S2 use (timeRY = 5 segundos; timeGR = 90 segundos; timeYR = 5 segundos; timeRG = 30 segundos.
  • Considere que o sinal de clock tem período de 1 segundo.

Unidade 8 - Testbench

  • 2 ENCONTROS
Unidade 8 - Testbench

Avaliações

Nas avaliações A1 e A2 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 XX/XX
  • A2 - Unidade 5 a Unidade 7: dia XX/XX
  • PF - Entrega do projeto final: dia 15/12
  • R12 - Recuperação de A1 e A2 : dia 12/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 30% 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.


  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 Erro de citação: Marca <ref> inválida; não foi fornecido texto para as refs chamadas PEDRONI2010b