Como evitar o uso da lógica combinacional no reset síncrono

De MediaWiki do Campus São José
Revisão de 14h53min de 18 de outubro de 2023 por Moecke (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar
Usando lógica combinacional no clear sincrono

Um código em VHDL genérico resultará na maioria das vezes na adição de um circuito combinacional para a entrada clear sincrono.


Figura 1 - RTL do flip-flop D com reset síncrono
FF D RST SINC.png
Fonte: Elaborado pelo autor.
evitando a lógica combinacional no clear sincrono

Para evitar o uso do circuito combinacional para a entrada CLEAR_SYNC no flip_flop D é necessário utilizar a Low-Level Primitives DFFEAS


Figura 2 - RTL de Flip-flop D com reset síncrono (usando o componente DFFEAS)
FF D SCLR.png
Fonte: Elaborado pelo autor.

Figura 3 - Technology Map do flip-flop D com reset síncrono (usando o componente DFFEAS)
TM FF D SCLR.png
Fonte: Elaborado pelo autor.
library ieee;
use ieee.std_logic_1164.all;

entity FF_D is
	port
	(
		clock    : in  STD_LOGIC;

		sync_clr : in  STD_LOGIC;
		d        : in  STD_LOGIC;
		q        : out STD_LOGIC := '0');
end entity;

architecture ifsc of FF_D is
	component DFFEAS
		port
		(
			d      : in  STD_LOGIC;
			clk    : in  STD_LOGIC;
			clrn   : in  STD_LOGIC;
			prn    : in  STD_LOGIC;
			ena    : in  STD_LOGIC;
			asdata : in  STD_LOGIC;
			aload  : in  STD_LOGIC;
			sclr   : in  STD_LOGIC;
			sload  : in  STD_LOGIC;
			q      : out STD_LOGIC);
	end component;
begin
	FFD : DFFEAS
	port map
	(
		d      => d,
		clk    => clock,
		clrn   => '1',
		prn    => '1',
		ena    => '1',
		asdata => '0',
		aload  => '0',
		sclr   => sync_clr,
		sload  => '0',
		q      => q);
end architecture;
Ler