Informática, perguntado por lucas27484, 6 meses atrás

VHDL

Usando a estrutura “process”, implementar em VHDL e simular no ModelSim um flipflop JK gatilhado pela borda de subida, com funcionamento descrito pela tabela
verdade no anexo.

Anexos:

Soluções para a tarefa

Respondido por GeBEfte
1

Como solicitado no exercício, vamos utilizar a estrutura process, que nos permitirá descrever circuitos sequenciais como é o caso dos flipflops abordados neste exercício.

\sf library~ ieee;\\use~ ieee.std\underline{~}logic\underline{~}1164.all;\\\\entity ~JK\underline{~}FF ~is\\~~~~	port (\\	~~~~~~~~	CLK,~J,~K,~PR,~CLR :~ in ~std\underline{~}logic;\\      ~~~~~~~~  Q: ~out~ std\underline{~}logic\\	~~~~);\\end ~JK\underline{~}FF;\\\\architecture~ behavior ~of ~JK\underline{~}FF ~is  \\signal ~Qprv: ~std\underline{~}logic;

\sf begin\\~~~~process(CLK,~ PR, ~CLR) ~is\\		~~~~begin\\			~~~~~~~~if ~(PR='1') ~ then\\				~~~~~~~~~~~~Qprv <= '1';\\			~~~~~~~~elsif~ (CLR='1')~ then\\			~~~~~~~~~~~~	Qprv <= '0';\\			~~~~~~~~elsif~(CLK'event~ and~ CLK='1')~ then\\

\sf _{_{_{.}}}~~~~~~~~~~if ~J='0'~ and ~K='0'~ then \\					~~~~~~~~~~~~~~~~Qprv <= Qprv;\\				~~~~~~~~~~~~elsif ~J='0' ~and ~K='1' ~then\\				~~~~~~~~~~~~~~~~	Qprv <= '0';\\			~~~~~~~~~~~~elsif ~J='1'~ and~ K='0' ~then\\				~~~~~~~~~~~~~~~~	Qprv <= '1';\\			~~~~~~~~~~~~	elsif ~J='1' ~and~ K='1' ~then\\				~~~~~~~~~~~~~~~~	Qprv <= not(Qprv);\\			~~~~~~~~~~~~	end~ if;\\		~~~~~~~~	else\\		~~~~~~~~~~~~		Qprv <= Qprv;\\			~~~~~~~~end~ if;\\			~~~~	end ~process;

\sf Q <= Qprv;\\end ~behavior;

Comentários:

--> As primeiras linhas foram reservadas para informarmos a utilização da biblioteca IEEE e dos recursos inclusos no padrão 1164.

--> No bloco "entity", declaramos todas entradas e saídas do circuito, seus tipos e seus tamanhos (bits). Note que, no caso de haver mais de um bit, declaramos como um vetor de bits (std_logic_vector). É importante ressaltar também que, o nome dado à entity deve ser igual ao do projeto, já que, dependendo do software utilizado, podem surgir erros na montagem e simulação do projeto.

--> No bloco "architecture", vamos tratar do comportamento do circuito, isto é, de que modo e o que ele apresentará na sua saída. O signal Qprv (saída Q prévia) declarado é responsável por armazenar o valor registrado no FF no processo anterior.

--> Na lista de sensibilidade da estrutura process, colocamos as entradas PR, CLR e CLK, responsáveis por "acordar" este bloco sempre que sofrerem alguma alteração.

--> Observe que a ordem na qual dispomos a estrutura condicional if/elsif/else atende aos critérios impostos na tabela verdade, ou seja, a entrada PR tem prioridade sobre todas as outras e CLR, sobre a CLK.

--> É preciso destacar também que, embora tenhamos descrito o comportamento do circuito por meio de uma estrutura condicional, haveria outras possibilidades.

A simulação deverá apresentar resultados semelhantes aos vistos no diagrama mostrado na figura anexada à resolução. Note, particularmente como são atendidas as prioridades das entradas PR, CLR e CLK.

\Huge{\begin{array}{c}\Delta \tt{\!\!\!\!\!\!\,\,o}\!\!\!\!\!\!\!\!\:\,\perp\end{array}}Qualquer~d\acute{u}vida,~deixe~ um~coment\acute{a}rio

Anexos:
Perguntas interessantes