VHDL Very High Speed Integrated Circuit Hardware Description Language

Tamanho: px
Começar a partir da página:

Download "VHDL Very High Speed Integrated Circuit Hardware Description Language"

Transcrição

1 Universidade Federal do Paraná Departamento de Informática Introdução VHDL Very High Speed Integrated Circuit Hardware Description Language Linguagem para descrição de sistemas digitais Evoluiu para simulação, análise, síntese Origem: meados década de 80, US Department of Defense e IEEE Norma IEEE ,, 2008 Outras linguagens: VERILOG, SystemC, ABEL VHDL predomina na Europa, VERILOG E.U.A. Prof. Eduardo Todt 2009 Níveis de abstração Estrutura de uma descrição VHDL ports VHDL entity Interface (entity declaration)? Body (architecture)? sequential, combinational, Processes, subprograms entity NAME_OF_ENTITY is [generic generic_declarations);] port (signal_names: mode type; signal_names: mode type; : signal_names: mode type); end [NAME_OF_ENTITY] ; -- exemplo de entity entity alarme is port ( porta, identificado: in std_logic; sirene: out std_logic); end alarme; Entity Declaração generic Entity define interfaces e o nome de um objeto entity NAME_OF_ENTITY is [generic generic_declarations);] port (signal_names: mode type; signal_names: mode type; : signal_names: mode type); end [NAME_OF_ENTITY] ; port: interfaces mode: in out buffer inout type: bit bit_vector std_logic std_logic_vector boolean integer real character time... generic ( constant_name: type [:=value] ; constant_name: type [:=value] ; : constant_name: type [:=value] ); Define constantes locais, em geral para tempo (delay de portas) e tamanho de barramentos e registradores std_logic tem 9 valores (U,Z,X,0,1,W,L,H,-) definidos em std_logic_1164 package bit tem valores 0 ou 1

2 Architecture Architecture especifica operação e implementação * uma entidade pode ter várias arquiteturas associadas : : architecture architecture_name of NAME_OF_ENTITY is -- Declarations -- components declarations -- signal declarations -- constant declarations -- function declarations -- procedure declarations -- type declarations -- Statements Modelo comportamental architecture behavioral of alarme is sirene <= (porta and not identificado); end behavioral; entity XNOR2 is port (A, B: in std_logic; Z: out std_logic); end XNOR2; architecture behavioral_xnor of XNOR2 is signal X, Y: std_logic; X <= A and B; Y <= (not A) and (not B); \ 3 comandos concorrentes Z <= X or Y; / End behavioral_xnor; end architecture_name; Modelo estrutural Associação posicional x explícita architecture structural of alarme is -- declarações de tipos de componentes utilizados component AND2 port (in1, in2: in std_logic; out1: out std_logic); end component; component NOT1 port (in1: in std_logic; out1: out std_logic); end component; posicional component AND2 port (in1, in2: in std_logic; out1: out std_logic); end component; U1: AND2 port map (porta, n_identificado, sirene); -- declaração de sinal para interconexão signal n_identificado: std_logic; -- instanciação dos componentes utilizados e sinais de ligação U0: NOT1 port map (identificado, n_identificado); U1: AND2 port map (porta, n_identificado, sirene); end structural; explícita component AND2 port (in1, in2: in std_logic; out1: out std_logic); end component; U1: AND2 port map (in1 => porta, in2=> n_identificado, out1=> sirene); Library Package library ieee; use ieee.std_logic_1164.all; -- tipos padrão use ieee.std_logic_arith.all; -- funções aritm éticas, conversão de tipos e comparações para signed, unsigned, integer, std_ulogic, std_logic and std_logic_vector use ieee.std_logic_unsigned.all; -- idem para unsigned use ieee.std_logic_signed.all; -- idem para signed use ieee. std_logic_misc. all; -- tipos e constantes adicionais overload de operadores, como + permite operações com vetores de bits all indica que são utilizados todos elementos, poderia ser especificado algum encapsulam declarações para serem compartilhadas podem ter declarações e opcionalmente um corpo -- Package declaration package name_of_package is package declarations end package name_of_package; -- Package body declarations package body name_of_package is package body declarations end package body name_of_package;

3 Package Package package data_types is subtype address is bit_vector(24 downto 0); subtype data is bit_vector(15 downto 0); constant vector_table_loc : address; function data_to_int(value : data) return integer; function int_to_data(value : integer) return data; end data_types; package body data_types is constant vector_table_loc : address := X"FFFF00"; function data_to_int(value : data) return integer is body of data_to_int end data_to_int; function int_to_data(value : integer) return data is body of int_to_data end int_to_data; end data_types; Detalhes de implementação omitidos, corpo necessário library ieee, my_func; use ieee.std_logic_1164.all; use my_func.basic_func.all; my_func é a biblioteca criada (.vhdl)? basic_func é o nome de um conjunto declaração e corpo definidos biblioteca do usuário (default): work contém todos objetos definidos no projeto numeric _std Packages para operações numéricas Padrão IEEE Define tipos unsigned e signed Define aritmética, comparação e operadores lógicos para estes tipos std_logic_arith Padrão Synopys (padrão industrial de fato) Define tipos unsigned e signed Define aritmética e compara ção para estes tipos std_logic_unsigned Padrão Synopys (padrão industrial de fato) Define aritmética e compara ção para std_logic_vector identificadores Elementos de VHDL caracteres A-Z, a-z, 0-9 e underscore case insensitive extended identifiers: com \, case sensitive, admitem caracteres especiais. Ex: \input #1\, \BUS:\data\ keywords: abs, all, and, assert,, not, case, if, mod, not, or, out, select, then, use, when, xor,... Recomendação: use numeric _std, se necessário combine com std_logic_unsigned; não use simultaneamente numeric_std e adt_logic_arith Elementos de VHDL Elementos de VHDL números integer literals: 12, 256E3, 12E+6 real literals: 1.2, , 3.14E-2 base 2: 2#1010# base 16: 16#1a# undescores são ignorados: 2#1010_1100_0011# fortemente tipado: integer 1, real 1, bit 1 são diferentes caracteres, strings, strings de bits caractere: A string de caracteres: abracadabra bit strings b x 1ff0

4 Elementos de VHDL constantes constant list_of_name_of_constant: type [ := initial value] ; constant DELAY: time := 5 ns; constant DATA_BUS: integer:= 32; sinais declarados fora de processos signal list_of_signal_names: type [ := initial value] ; signal clock: std_logic; sinais são atribuídos apó s um delay: SUM <= (A xor B) after 2 ns; entrada <= 0, 1 after 2ns, 0 after 10ns, 1 after 15 ns; são atualizados no final de processos ou em wait variáveis são atualizadas imediatamente devem ser declaradas dentro de processos variable list_of_variable_names: type [ := initial value] ; variable CTL_BIT: bit :=0; atribuição: Variable_name := expression; soma:= 120; Signals x Variables architecture var of teste is signal trigger, soma: integer := 0; process variable var1: integer :=1; variable var2: integer :=2; variable var3: integer :=3; wait on trigger; var1 := var2; var2 := var1 + var3; var3 := var2; soma <= var1 + var2 + var3; end var; Signals x Variables Signals x Variables architecture sig of teste is signal trigger, soma: integer := 0; signal sig1: integer :=1; signal sig2: integer :=2; signal sig3: integer :=3; process wait on trigger; sig1 <= sig2; sig2 <= sig1 + sig3; sig3 <= sig2; soma <= sig1 + sig2 + sig3; end sig; no exemplo com variáveis a avaliação é seqüencial, resultando em 12 no exemplo com sinais, a avaliação é concorrente resultando em 6 todos sinais s ão atualizados delta time depois do sinal trigger, ao final de processos Mais sobre sinais e variáveis Tipos de dados podem ser especificados intervalo e valor inicial variable alunos: integer range 1 to 60 := 1; signal alunos: integer range 1 to 60 := 1; signal flag: std_logic := 0 ; sinais em geral são para comunicação entre módulos sinais podem ser declarados em entity, architecture ou package sinais não podem ser declarados em processos, mas podem ser inicializados nestes signal byte: std_logic_vector (7 downto 0); byte <= (7 => 1, 5 downto 2 => 1, others => 0 ); bit: 0 ou 1 bit_vector: 0011, x 1f00,... boolean: true ou false real integer character: a, 0, ou string abcd physical: ms, ps, mv, sec, min,... intervalos: integer range 1 to 10 integer range 10 downto 1 sem range significa todos valores possíveis <> significa declaração postergada do intervalo enumerações type estados is ( idle, running, halt ); type octal is ( 0, 1, 2, 3, 4, 5, 6, 7 ); type oper is (load, store, add, sub);

5 Arrays Arrays multidimensionais coleção de elementos de mesmo tipo type array_name is array (indexing scheme) of element_type; type WORD1 is array (15 downto 0) of std_logic; type WORD2 is array (0 to 15) of std_logic; type FRAME1 is array (0 to 7) of integer; type MEMORY is array (address) of WORD1; preenchimento de array: type a is array (1 to 4) of character; posicional: ( l', e', s', s')? por nome: (1 => l', 3 => s', 2 => e', 4 => s')? valores default: ( l', e', others => s )? type MATRIX3X2 is array (1 to 3, 1 to 2) of integer; variable DATA_ARRAY: MATRIX3X2 := ((1,2), (2,3), (4,6)); Records coleção de elementos que podem ser de tipos distintos type name is record identifier :subtype_indication; : identifier :subtype_indication; end record; type FRAME is record flag : boolean; source : bit_vector(7 downto 0); dest : bit_vector(7 downto 0); data : bit_vector (31 downto 0); end record; signal A, B: FRAME; A.dest = 1100_0011 ; Tipo padrão std_ulogic tipo não resolvido (indefinido em caso de conflitos)? 9 valores std_logic_1164 package 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 Tipo padrão std_logic tipo resolvido tipo mais comumente utilizado em descrições de hardware std_logic_1164 package SUBTYPE std_logic IS resolved std_ulogic; TYPE std_logic_vector IS ARRAY ( NATURAL RANGE <>) OF std_logic; resolution function CONSTANT resolution_table : stdlogic_table := ( U X 0 1 Z W L H ( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- U ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- X ( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- 0 ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- 1 ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- Z ( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- W ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- L ( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- H ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ) -- - ); std_logic_1164 package Conversões de tipos std_ulogic to bit to_bit(expression)? std_logic_vector to bit_vector to_bitvector(expression)? std_ulogic_vector to bit_vector to_bitvector(expression)? bit to std_ulogic To_StdULogic(expression)? bit_vector to std_logic_vector To_StdLogicVector(expression )? bit_vector to std_ulogic_vector To_StdUlogicVector(expression)? std_ulogic to std_logic_vector To_StdLogicVector(expression )? std_logic to std_ulogic_vector To_StdUlogicVector(expression)? IEEE std_logic_unsignede std_logic_arith possuem conversão entre inteiros e std_logic_vector e vice-e-versa, além de overload de operadores. Com isto pode-se realizar operações aritméticas com vetores de bits.

6 Atributos de sinais Operadores signal_name event if(clock eventand CLOCK= 1 ) then scalar_type low scalar_type high scalar_type left scalar_type right... Ordem de precedência: classe 7 (maior) para classe 1 (menor)? Operadores de mesma classe: esquerda para direita na expressão Parêntesis para alterar ordem Van der Spiegel, 2006 IEEE Simplificação de expressões condicionais Comandos sequenciais comandos sequenciais são utilizados em processos, funções e procedimentos um processo é um comando concorrente, mas os comandos dentro do mesmo são executados sequencialmente SynthWorks2008 [process_label:] process [ (sensitivity_list ) ] [is] [ process_declarations] list of sequential statements such as: signal assignments variable assignments case statement exit statement if statement loop statement next statement null statement procedure call wait statement end process [process_label]; Comandos sequenciais atribuições de variáveis são restritas ao escopo dos processos e são sequenciais alteração em um sinal na sensitivity list ocasiona execução imediata do processo se não há sensitivity list é necessário incluir um wait para que o processo interrompa não é possível ter juntos sensitivity list e wait no mesmo processo variáveis são declaradas no processo antes do Exemplo de processo: FF D library ieee; use ieee.std_logic_1164.all; entity FlipFlopD is port (clk, clear, D: in std_logic; Q: out std_logic); end FlipFlopD; architecture comportamental of FlipFlopD is process (clk, clear)? if (clear = 1 ) then Q <= 0 ; elsif (clk event and clk = 1 ) then Q <= D; end comportamental;

7 entity FFD_tb is end; Testbench para FF D architecture teste of FFD_tb is signal D_tb, clear_tb, Q_tb: std_logic; signal clock_tb: std_logic:='0'; component FlipFlopD is port(clk, clear, D: in std_logic; Q: out std_logic); end component; F1: FlipFlopD port map(clock_tb,clear_tb,d_tb, Q_tb); D_tb <= '0', '1' after 50 ns, '0' after 100 ns; clock_tb <= not clock_tb after 25 ns; clear_tb <= '1', '0' after 60 ns; end; Comando sequencial if if condition then sequential statements [elsif condition then sequential statements ] [else sequential statements ] if S1= 0 and S0= 0 then Z <= A; elsif S1= 0 and S0= 1 then Z <= B; elsif S1= 1 and S0= 0 then Z <= C; elsif S1= 1 and S0= 1 then Z <= D; Comando sequencial case case expression is when choices => sequential statements when choices => sequential statements -- branches are allowed [ when others => sequential statements ] choices ::= choice { choice } choice ::= simple_expression discrete_range element_simple_name others Comando sequencial case entity MUX_4_1 is port ( SEL: in std_logic_vector(2 downto 1); A, B, C, D: in std_logic; Z: out std_logic); end MUX_4_1; architecture behav_mux41 of MUX_4_1 is PR_MUX: process (SEL, A, B, C, D)? case SEL is when 00 => Z <= A; when 01 => Z <= B; when 10 => Z <= C; when 11 => Z <= D; when others => Z <= X ; end process PR_MUX; end behav_mux41 Comando sequencial case case element_colour is when red => -- escolha simples statements for red; when green blue => -- ou statements for green or blue; when orange to turquoise => -- intervalo statements for these colours; IEEE Permite expressões estáticas locais contendo operadores definidos implicitamente e operadores e funções de std_logic_1164, numeric_std e numeric_unsigned case opcode is when X"00" => perform_add; when X"01" => perform_subtract; when others => signal_illegal_opcode; end case SynthWorks2008

8 IEEE representa don t care na cláusula de escolha Comando sequencial loop [ loop_label :]iteration_scheme loop sequential statements [next [label] [when condition]; [exit [label] [when condition]; end loop [loop_label]; next termina a iteração corrente exit encerra o loop SynthWorks2008 Comando sequencial loop Comando sequencial while loop entity COUNT31 is port ( CLK: in std_logic; COUNT: out integer); end COUNT31; architecture behav_count of COUNT31 is P_COUNT: process variable intern_value: integer :=0; COUNT <= intern_value; loop wait until CLK= 1 ; intern_value:=(intern_value + 1) mod 32; COUNT <= intern_value; end loop; end process P_COUNT; end behav_count; [ loop_label :] while condition loop sequential statements [next [label] [when condition]; [exit [label] [when condition]; end loop[ loop_label ]; while index < length and str(index) /= ' ' loop index := index + 1; end loop; Comando sequencial for loop Exemplo com for loop [ loop_label :] for identifier in range loop sequential statements [next [label] [when condition]; [exit [label] [when condition]; end loop[ loop_label ]; identifieré declarado pelo próprio loop e é válido somente no escopo do loop; seu valor não pode ser atribuído dentro do loop range: integer_expression to integer_expression integer_expression downto integer_expression function conv (byte : word8) return integer is variable result : integer := 0; variable k : integer := 1; for index in 0 to 7 loop if ( std_logic(byte(index))='1') then result := result + k; k := k * 2; end loop; return result; end conv ;

9 Comando sequencial wait pára um processo até que um evento ocorra wait until condition; wait for time expression; wait on signal; wait; -- algums sistemas s ó suportam este wait until signal = value; wait until signal event and signal = value; wait until CLK event and CLK= 1 ; -- \ são wait until CLK= 1 ; -- / idênticos! ** comportamento do if CLK= 1 é distinto... Comando sequencial null fazer nada útil em case statement case controller_command is when forward => engage_motor_forward; when reverse => engage_motor_reverse; when idle => null; Funções Funções executam comandos sequenciais e retornam um valor como o valor da função. Funções não alteram seus parâmetros formais. function identifier [ ( formal parameter list ) ] return return_type ; function random return float ; function is_even (N: integer) return boolean ; parâmetros separados por ; Estruturas concorrentes atribuição de sinais A <= B + C; E <= B + D; atribuição de sinais com escolha Target_signal <= expression when Boolean_condition else expression when Boolean_condition else : expression; Estruturas concorrentes atribuição de sinais com seleção with choice_expression select target_name <= expression when choices, target_name <= expression when choices, : target_name <= expression when choices; Estruturas concorrentes A escolha pode ser mais de um valor ou um range: target <= value1 when 000, value2 when , value3 when others;

10 Funções function identifier [ ( formal parameter list ) ] return return_type is [declarations] sequential statement(s)? return some_value; end function identifier; function raiz_quadrada(n: float) return float is variable aux: float; -- cálculo da raiz quadrada return aux; end function raiz_quadrada; Procedimentos Procedimentos executam comandos seqüenciais e retornam valores em objetos globais ou por meio dos parâmetros formais Quando colocados em um package, a declaração fica na parte de declaração do package e a implementação no body do package Procedimentos procedure identifier [ ( formal parameter list ) ] ; procedure open_door ; procedure build ( A : in integer; B : inout signal bit_vector; C : out real; D : file ) ; Procedimentos procedure identifier [ ( formal parameter list ) ] is [declarations] sequential statement(s) end procedure identifier ; libraryieee; use IEEE.Std_Logic_1164.all; package calchp is subtype... type... constant... procedure somaab ( signal A,B: in regsize; signal S: out regsize); end calchp; package body calchp is procedure somaab ( signal A,B: in regsize; signal S: out regsize); is variable carry : STD_LOGIC;... end procedure somaab; end package body calchp; A procedure é declarada no package A procedure é implementada no package body IEEE Process(all) sensitivity list com todos sinais libraryieee; use IEEE.Std_Logic_1164.all; use work.calchp. all ; entity calculadora is port( clock : in bit; saida : out regsize; flag : out std_logic); end; architecture rtl of calculadora is... somaab( opa, opb, cin, soma, cout);... end rtl; Significa: utilizar todas as declarações do package calchp A procedure é utilizada na architecture SynthWorks2008

11 Codificador 7 segmentos Codificador com prioridade Em um codificador a sa ída é uma função combinacional da entrada. O comando with é utilizado para atribuir um dado valor a um sinal, em função de um sinal de controle. Relacione o estado dos 7 segmentos DISPB com o estado do número binário showb f e a g d b c with showb select DISPB <= " " when "0000", " " when "0001", " " when "0010", " " when "0011", " " when "0100", " " when "0101", " " when "0110", " " when "0111", " " when "1000", " " when "1001", " " when "1010", " " when "1011", " " when "1100", " " when "1101", " " when "1110", " " when "1111"; Em um codificador com prioridade se o bit menos significativo fo r 1 a saída é 0, se o bit seguinte for 1, independentemente do anterior, a saída é 1 ; e assim sucessivamente. Exemplo ( s(3) tem maior prioridade ) : Y <= 11" when s(3) = 1 else 10 when s(2) = 1 else 01 when s(1) = 1 else 00 ; Importante haver condição default em atribuiçõ es e estruturas similares: NÃO HAVENDO ESTA CONDI ÇÃO IMPLICA EM HAVER MEMORIZAÇÃO DO SINAL - diferente de software! ( warning latch inferred)? Decodificador MUX 2x1 decodificador é utilizado basicamente para acionar uma saída em função de um determinado endereço Mesma construção que o codificador Exemplo para um decodificador 3 8 with endereço select saída <= " " when "000", " " when "001", " " when "010", " " when "011", " " when "100", " " when "101", " " when "110", " " when "111"; entity MUX_2x1 is port (sel, A, B: in std_logic; Z: out std_logic); end MUX_2x1; architecture comport of MUX_2x1 is P1: process (sel, A, B)? if (not sel) then Z <= A; else Z <= B; end process P1; end comport; MUX 4x1 entity MUX_4x1 is port(sel: in std_logic_vector(1 downto 0); A, B, C, D: in std_logic; Z: out std_logic); end MUX_4x1; architecture comport of MUX_4x1 is process (sel, A, B, C, D)? case sel is when 00 => Z <= A; when 01 => Z <= B; when 10 => Z <= C; when 11 => Z <= D; when others => Z <= X ; end comport; MUX 2x1 concorrente entity MUX_2x1 is port (sel, A, B: in std_logic; Z: out std_logic); end MUX_2x1; architecture comport of MUX_2x1 is Z <= A when sel= 0 else B; end comport;

12 MUX 2x1 concorrente Mais um mux entity MUX_2x1 is port (sel, A, B: in std_logic; Z: out std_logic); end MUX_2x1; architecture comport of MUX_2x1 is with sel select Z <= A when 0, B when 1 ; end comport; Saida <= In0 when 0 1, In1 when 2 to 5, In2 when 6, In3 when 7, 'Z' when others; todos casos devem ser cobertos, pode ser usado others ULA (1)? ULA (2)? outalu_int <= opb when op_alu=st else opa when op_alu=mov else opa and opb when op_alu=and_i else opa or opb when op_alu=or_i else opa xor opb when op_alu=xor_i else opb(15 downto 8) & opa(7 downto 0) when op_alu=ldli else opa - opb when op_alu=sub else not opa when op_alu=not_i else opa(14 downto 0) & '0' when op_alu=sl else '0' & opa(15 downto 1) when op_alu=sr else opb + apa; process(m,cin,opcode,opera,operb)? if (M='1') then -- modo 1 é lógico case OPCODE is when "0000" => saida <= not(opera); when "0001" => saida <= not(opera and OPERB); when "0010" => saida <= (not(opera)) or OPERB; when "0011" => saida <= "0001";... continuam as outras operações else -- modo 0 é aritmético case OPCODE is when "0000" => tempa <= OPERA; tempb <= OPERB; when "0001" => tempa <= not OPERA; tempb <= OPERB; when "0010" => tempa <= OPERA; tempb <= "1111";... continuam as outras operações SUM(tempA, tempb, cin, saida, C4); Registrador registradores são basicamente sinais declarados em processos com sinal de sincronismo (exemplo: clock). Para efeito de síntese e simulação, é aconselhável introduzir um reset assíncrono. process (clock, reset)? if reset = '1' then reg <= (others => 0 ); elsif clock 'event and clock='1' then reg <= barramento_a; -- portável; 1) Como introduzir um sinal de enable no registrador, para habilitar a escrita? 2) Como implementar um registrador tri-state controlado por um sinal hab? Registrador com largura de palavra parametrizável, com ce : library... entity regnbit is generic(n : integer := 16); port( ck, rst, ce : in std_logic; D : in STD_LOGIC_VECTOR (N-1 downto 0); Q : out STD_LOGIC_VECTOR (N-1 downto 0) ); end regnbit; architecture regn of regnbit is process(ck, rst)? if rst = '1' then Q <= (others => '0'); elsif ck'event and ck = '0' then if ce = '1' then Q <= D; end regn; Registrador generic define um parâmetro do módulo Uso: rx: regnbit generic map (8)? port map (ck => ck, rst => rst, ce => wen, D => RD, Q => reg);

13 Registrador de deslocamento process (clock, reset)? if reset = '1' then A <= 0; B <= 0; C <= 0; elsif clock'event and clock='1' then A <= entrada; B <= A; C <= B; 1) Desenhe o circuito acima utilizando flip-flops 2) A ordem das atribuições (A,B,C) é importante? O que ocorreria se fosse uma linguagem de programação tipo C? Atribuição dentro/fora de process: process (clock, reset)? if clock'event and clock='1' then A <= entrada; B <= A; C <= B; Y <= B and not (C); X <= B and not (C); Registrador -- fora do process -- dentro do process Qual a diferença de comportamento nas atribuições à X e a Y? Conclusão: - sinais atribuídos em processos, com controle de clock, serão sintetizados com flip-flops. - Sinais fora de processos ou em processos sem variável de sincronismo (clock) serão sintetizados com lógica combinacional. Contador ROM entity contup is port ( clock, reset, Load, Enable: In std_logic; DATABUS : In Std_logic_Vector (5 downto 0); Upcount2 : Out Std_logic_Vector (5 downto 0)); end contup; architecture RTL of contup is Signal Upcount : std_logic_vector (5 downto 0); Upcount2 <= Upcount; Upcounter : Process (clock, reset)? if reset = '1' then Upcount <= "000000"; elsif clock'event and clock='1' then if ENABLE = '1' then if LOAD = '1' then Upcount <= DATABUS; else Upcount <= Upcount + 1; end process Upcounter; end RTL; packagerom is constant largura : integer := 4; -- definição de uma rom 12x4 subtypepalavra is std_logic_vector(1 to largura); subtypetamanho is integer range 0 to 11; typemem_rom is array (0 to 11) of palavra; constant ROM1 : mem_rom := "1100", "1100","0100","0000", "0110","0101","0111", "1100","0100","0000","0110","0101"); end ROM; use work.rom. all; ROM entity contador is port( clock, reset : in bit; waves : out palavra); end; architecture A of contador is signal step : tamanho := 0; waves <= ROM1(step); -- conteúdo da ROM na sa ída process wait until clock'event and clock='1'; if reset='1' then step <= 0; -- primeiro estado elsif step = tamanho'high then step <= tamanho'high; -- tranca! else step <= step + 1; -- avança 1 passo end A; Máquina de estados entity MOORE is port(entrada1, clock : in std_logic; saida1: out std_logic); end; architecture comportamental of MOORE is type STATES is (S0, S1, S2, S3); -- tipo enumerado signal EA, PE : STATES; controle: process(clock, reset) if reset= 1 then EA <= S0; elsif clock'event and clock='1 then EA <= PE; combinacional: process(ea, entrada1) case EA is when S0 => saida1 <= '0'; if entrada1='0' then PE<=S0; else PE<=S2; end if; when S1 => saida1 <= '1'; if entrada1='0' then PE<=S0; else PE<=S2; end if; when S2 => saida1 <= '1'; if entrada1='0' then PE<=S2; else PE<=S3; end if; when S3 => saida1 <= '0'; if entrada1='0' then PE<=S3; else PE<=S1; end if; end comportamental;

14 IEEE Permite atribuições condicionais para sinais e variáveis em código sequencial (antes só era permitido em estruturas concorrentes) IEEE Permite atribuições com seleção para sinais e variáveis em código sequencial (antes só era permitido em estruturas concorrentes) SynthWorks2008 SynthWorks2008 IEEE Operadores de redução unária Processador Cleopatra Material a seguir cedido pelos autores Calazans e Moraes (PUCRS). SynthWorks2008 Arquitetura CLEÓPATRA v3.0 Arquitetura CLEÓPATRA CPU entity control is port ( reset, ck, n, z, c, v : in std_logic; halt : out std_logic; ir : in regsize; uins : out microinstrucao )? end control; halt ck reset ce rw entity datapath is port( std_logic; out regsize; inout regsize; microinstrucao; std_logic ); ck, reset : in address, ir : datamem : uins : in n, z, c, v : out DATAMEM ADDRESS MEMÓRIA dados e programa

15 lê da memória MICROINSTRUÇÃO => PALAVRA DE CONTROLE 0 mux 1 sel CE RW DATAMEM escreve na memória MAR MDR IR PC AC RS CE RW ADDRESS BUS_B BUS_A type microinstrucao is record w,r,u: opcode; ce, rw, lnz, lcv : std_logic; end record; Barramento de dados v3.0 w Codifica ção de escrita ULA u lnz lcv r Codificação de leitura NZCV lê da memória 0 mux 1 sel CE RW DATAMEM escreve na memória MAR (0)? MDR (1)? IR (2)? PC(3)? AC (4)? RS (5)? FETCH 1/3 CE RW MAR PC uins <= ( 0, 3, 7, '0', '0', '0', '0'); type microinstrucao is record w,r,u: opcode; ce, rw, lnz, lcv : std_logic; end record; lê da memória 0 mux 1 sel CE RW DATAMEM escreve na memória MAR (0)? MDR (1)? IR (2)? PC(3)? AC (4)? RS (5)? FETCH 2/3 CE RW MDR PMEM(MAR); PC++ uins <= ( 1, 3, 1, '1', '1', '0', '0'); type microinstrucao is record w,r,u: opcode; ce, rw, lnz, lcv : std_logic; end record; w Codifica ção de escrita ULA u lnz lcv w Codifica ção de escrita ULA u lnz lcv r Codificação de leitura NZCV r Codificação de leitura NZCV lê da memória 0 mux 1 sel CE RW DATAMEM escreve na memória MAR (0)? MDR (1)? IR (2)? PC(3)? AC (4)? RS (5)? FETCH 3/3 CE RW IR MDR uins <= ( 2, 1, 4, '0', '0', '0', '0'); type microinstrucao is record w,r,u: opcode; ce, rw, lnz, lcv : std_logic; end record; BLOCO DE DADOS - COMPONENTES (7)? lê da memória 0 mux 1 sel CE RW DATAMEM escreve na memória MAR MDR IR PC AC RS CE RW ADDRESS BUS_B BUS_A w Codifica ção de escrita ULA u lnz lcv w Codifica ção de escrita ULA u lnz lcv r Codificação de leitura NZCV r Codificação de leitura NZCV

16 lê da memória 0 mux 1 sel CE RW BD - ACESSO À MEMÓRIA datamem escreve na memória out_ula CE RW -- dados provenientes ou da mem ória ou da ULA sel1 <= uins.ce and uins.rw; outmux <= out_ula when sel1='0' else datamem; -- escrita para a mem ória sel2 <= uins.ce and (not uins.rw); datamem <= out_ula when sel2='1' else "ZZZZZZZZ"; ir <= reg_ir; BD - REGISTRADORES -- instrução corrente, a ser utilizada no bloco de controle R1: reg8clear port map ( clock=>ck, reset=>reset, ce=>wmar, D=>out_ula, Q=>address); R2: reg8clear port map ( clock=>ck, reset=>reset, ce=>wmdr, D=>outmux, Q=>mdr); R3: reg8clear port map ( clock=>ck, reset=>reset, ce=>wir, D=>out_ula, Q=>reg_ir); R4: reg8clear port map ( clock=>ck, reset=>reset, ce=>wpc, D=>out_ula, Q=>pc); R5: reg8clear port map ( clock=>ck, reset=>reset, ce=>wac, D=>out_ula, Q=>ac); R6: reg8clear port map ( clock=>ck, reset=>reset, ce=>wrs, D=>out_ula, Q=>rs); BD - ACESSO AOS BARRAMENTOS BUS_B BUS_A BD - CODIFICAÇÃO DE ESCRITA Uso de tri-states: MDR IR PC AC RS busb <= mdr when rmdr='1' else "ZZZZZZZZ"; busb <= reg_ir when rir='1' else "ZZZZZZZZ"; busa <= pc when rpc='1' else "ZZZZZZZZ"; busa <= ac when rac='1' else "ZZZZZZZZ"; busa <= rs when rrs='1' else "ZZZZZZZZ"; ULA wmar <= '1' when uins.w=0 else '0'; wmdr <= '1' when uins.w=1 or uins.w=6 else '0'; wir <= '1 when uins.w=2 else '0'; wpc <= '1' when uins.w=3 or uins.w=6 else '0'; wac <= '1' when uins.w=4 else '0'; wrs <= '1' when uins.w=5 else '0'; BD - CODIFICAÇÃO DE LEITURA rmdr <= '1' when uins.r =1 or uins.r=6 or uins.r=7 else '0'; rir <= '1' when uins.r =2 else '0'; rpc <= '1' when uins.r =3 or uins.r=7 else '0'; rac <= '1' when uins.r =4 or uins.r=6 else '0'; rrs <= '1' when uins.r=5 else '0'; BD - ULA um <= " "; zero <= '0'; process(uins.u,busa,busb)? case uins.u is when 0 => somaab( busa, busb, zero, out_ula, cout); when 1 => somaab( busa, um, zero, out_ula, cout); when 2 => out_ula <= not busa; when 4 => out_ula <= busb; when 5 => out_ula <= busa or busb; when 6 => out_ula <= busa and busb; when 7 => out_ula <= busa; when others => null; end case ;

17 BD - FLAGS DE ESTADO (falta v)? process(ck,reset,uins)? if(reset='1') then c <= '0'; n <= '0'; z <= '0'; elsif ck'event and ck='0 then if uins.c='1' then c <= cout; if uins.nz='1 then n <= out_ula(7); z <= is_zero(out_ula); Chamada de FUNÇÃO VOLTA BLOCO DE CONTROLE Função: gerar os sinais de controle para o bloco de dados, em função da instrução corrente e dos flags de estado. Estrutura básica do bloco de controle: process wait until ck'event and ck='1'; -- fetch -- uins <= mar_pc; uins <= mdr_mmarp; uins <= ir_mdr; case ir is -- seleção pelo opcode when xxxx => uins <= ac_ac; when others => null; end case ; Espera o clock wait until ck'event and ck='1'; wait until ck'event and ck='1'; wait until ck'event and ck='1'; MICROINS E ESPERA SELECIONA BLOCO DE CONTROLE Vantagens deste estilo de descrição: Simples de descrever o controle: fetch seguido de case para seleção da operação. Fácil de realizar a temporização: basta inserir após cada microinstrução uma espera por borda de clock. Atenção: após a última microinstrução do ciclo de instrução não vai wait. Razão: antes do fetch já tem inserido um wait. Esta temporização permite instruções com número diferente de ciclos para execução, como é o caso da arquitetura proposta. BC - Exemplo de instrução (1)? De acordo com a especificação LDA, ADD, OR, AND são praticamente iguais when ldaim andim orim addim => uins <= mar_pc; uins <= mar_mmarp; sel_op (ir(7 downto 4), uins); wait until ck'event and ck='1'; wait until ck'event and ck='1'; Função para escolha do microcomando em função dos 4 bits mais significativos t0: t0: MAR MAR PC PC t1: t1: MDR MDR PMEM(MAR); PC++ PC++ t2: t2: AC AC AC AC op op MDR MDR setar setar flags flags (1) continuação Função para escolha do microcomando para LDA/ADD/OR/AND Inserir a função ou no package ou antes do BC - Exemplo de instrução (2)? Micro código para os jumps(endere çamento direto)? Trata-se todos os jumps juntos, no mesmo caso procedure sel_op (signal ir: in std_logic_vector(3 downto 0); signal uins : out microinstrucao ) is case ir is when x"4" => uins <= (4, 1, 4, '0','0', 1','0'); -- ac <- mdr when x"5" => uins <= (4, 6, 0, '0','0', '1','1'); -- ac < - ac + mdr when x"6" => uins <= (4, 6, 5, '0','0', '1','0'); -- ac < - ac or mdr when x"7" => uins <= (4, 6, 6, '0','0', '1','0'); -- ac < - ac and mdr when others => null; end sel_op; flags when jcdir jndir jzdir => uins <= mar_pc; uins <= mdr_mmarp; wait until ck'event and ck='1'; wait until ck'event and ck='1'; if (((jc and c)='1') or ((jn and n)='1') or ((jz and z)='1')) then else uins <= pc_mdr; uins <= nop; t0: MAR PC t1: MDR PMEM(MAR); t2: if( flag) then PC MDR else PC++;

18 BC - Exemplo de instrução (3)? Micro código para o HALT : implementa através de uma espera pelo reset when hlt => while reset='0' loop wait until ck'event and ck='1'; end loop; Crítica à implementação apresentada: ENTIDADE CPU entity cleopatra is port( ck, reset: in std_logic; ce, rw, inicio : out std_logic; address: out regsize; datamem: inout regsize); end cleopatra; architecture cleopatra of cleopatra is component datapath is port( uins : in microinstrucao; ck, reset: in std_logic; ir, address : out regsize; datamem : inout regsize; n, z, c, v : out std_logic ); end component datapath; component control is port( ir : in regsize; n, z, c, v, ck, reset: in std_logic uins : out microinstrucao; ); end component control; As seqüências mar_pc, mdr_mmarp, e mdr_mmar são repetidas inúmeras vezes. Poder-se-ia ter escrito um c ódigo mais estruturado. signal uins : microinstrucao; signal ir : regsize; signal n,z,c,v : std_logic; ce <= uins.ce; rw <= uins.rw; ENTIDADE CPU dp: datapath port map ( uins=>uins, ck=>ck, reset=>reset, ir=>ir, address=>address, datamem=>datamem, n=>n, z=>z, c=>c, v=>v); ctrl: control port map ( ir=>ir, n=>n, z=>z, c=>c, v=>v, ck=>ck, reset=>reset, uins=>uins); end cleopatra; SINAIS PARA A MEMÓRIA TEST BENCH (1)? Módulo responsável por gerar os vetores de teste para a simulação AÇÕES: 1 -- incluir a CPU no test_bench 2 -- gerar o clock 3 -- gerar o reset 4 -- ler da memória 5 -- escrever na memória, de maneira síncrona, como nos registradores 6 -- realizar a carga na memória quando acontece o reset TEST BENCH (2)? IMPLEMENTAÇÃO: architecture tb of tb is signal ck, reset, ce, rw, inicio: std_logic; signal address, data : regsize; file INFILE : TEXT open READ_MODE is "program.txt"; signal memoria : ram; Desnecessário inicializar signal ops, endereco : integer; BLÁ, BLÁ, BLÁ end tb Para carga do programa 1 -- incluir a CPU no test_bench TEST BENCH (3)? cpu : cleopatra port map(ck=>ck, reset=>reset, ce=>ce, rw=>rw, address=>address, datamem=>data); 2 -- gerar o clock process ck <= '1', '0' after 10ns; wait for 20ns; 3 -- gerar o reset reset <= '1', '0' after 5ns ;

19 TEST BENCH (4)? A MEMÓRIA É UM ARRAY, QUE É LIDO OU ESCRITO CONFORME OS SINAIS CEE RW ler da memória TEST BENCH (4 bis)? 5 -- escrever na memória, de maneira síncrona, como nos registradores PROBLEMA para escrita - duas fontes de escrita: inicialização e Cleóptara. Solução: data <= memoria(conv_integer(address)) when ce='1' and rw='1' else "ZZZZZZZZ "; process(go, ce, rw, ck)? if go'event and go='1' then if endereco>=0 and endereco <= 255 then memoria(endereco) <= conv_std_logic_vector(ops,8); elsif ck'event and ck='0' and ce='1' and rw='0' then if CONV_INTEGER(address)>=0 and CONV_INTEGER(address) <= 255 then memoria(conv_integer(address)) <= data; end if escrita pelo test_bech escrita pela Cleópatra Importante: testar os limites da RAM TEST BENCH (5)? O PROGRAMA ARMAZENADO NA MEMÓRIA É CARREGADO QUANDO O RESET ESTÁ ATIVO 6 -- realizar a carga na mem ória quando acontece o reset process variable IN_LINE : LINE; -- pointer to string variable linha : string(1 to 5); SUBIDA DO RESET wait until reset = '1'; while NOT( endfile(infile)) loop -- end file checking readline(infile,in_line); -- read line of a file read(in_line, linha); decodifica a linha e gera o sinal go end loop; LAÇO DE LEITURA when 'F' => endereco <=15; when others => null; wait for 1 ps; case linha(2) is when '0' => endereco <= endereco*16 + 0; when '1' => endereco <= endereco*16 + 1; when 'F' => endereco <= endereco* ; when others => null; -- linha (3) é espaço em branco TEST BENCH (6)? COMO CONVERTER A LINHA EM ENDEREÇO E DADO E GERAR GO : case linha(4) is case linha(1) is when '0' => ops <= 0; when '0' => endereco <= 0; when '1' => ops <= 1; when '1' => endereco <= 1; when 'F' => ops <=15; when others => null; wait for 1 ps; case linha(5) is when '0' => ops <= ops*16 + 0; when '1' => ops <= ops*16 + 1; when 'F' => ops <= ops* ; when others => null; wait for 1 ps; go <= '1'; wait for 1 ps; go <= 0'; Fazer uma função para converter um char em inteiro Pulso em go gera escrita na memó ria SIMULAÇÃO (1) - PROGRAMA PROGRAMA (em código objeto)? ; endereço 00 LDA # ; endereço 01 H ; endereço 02 ADD ; endereço 03 H ; endereço 04 STA ; endereço 05 H11 06 E0; endereço 06 HALT ; endereço 10 H77 FUNÇÃO DO PROGRAMA: somar a constante H98 ao conteúdo do endereço H10 e depois gravar o resultado em H11 Descida de Início indica nova instru ção Colocou no no acumulador no no final final da da 1# 1# instru instrução SIMULAÇ ÃO (2)? Endereço 10H 10H no no MAR MAR Soma Soma da da ac+mdr Gerou carry LDA # H98 ADD H10 STA H11 HALT Endereço 11H 11H WRITE WRITE HALT HALT Soma no MDR para Soma para ser ser escrito inserida no MDR escrito na na memória

20 Referências Fernando Gehm Moraes e Ney Calazans, PUCRS, notas de aula

VHDL Very High Speed Integrated Circuit Hardware Description Language

VHDL Very High Speed Integrated Circuit Hardware Description Language Universidade Federal do Paraná Departamento de Informática VHDL Very High Speed Integrated Circuit Hardware Description Language Prof. Eduardo Todt 2010 Introdução Linguagem para descrição de sistemas

Leia mais

LABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans

LABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans LABORG Parte 3 - VHDL: Processos, Paralelismo e o Comando process Fernando Gehm Moraes Ney Laert Vilar Calazans 31/março/2014 Sumário Ø Introdução Ø Processos em VHDL Ø TRABALHO A FAZER Ø A ENTREGAR 2

Leia mais

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona VHDL Lógica Síncrona Circuitos combinacionais respondem a estímulos com um atraso que depende de sua implementação Para sincronizar subsistemas em lógica combinacional utiliza-se barreiras temporais, que

Leia mais

Eletrônica Digital para Instrumentação

Eletrônica Digital para Instrumentação G4 Eletrônica Digital para Instrumentação Prof. Márcio Portes de Albuquerque (mpa@cbpf.br) Prof. Herman P. Lima Jr (hlima@cbpf.br) Centro Brasileiro de Pesquisas Físicas Ministério da Ciência e Tecnologia

Leia mais

Introdução à Linguagem VHDL

Introdução à Linguagem VHDL Sistemas Digitais EEL 480 Introdução à Linguagem VHDL Luís Henrique M. K. Costa luish@gta.ufrj.br UFRJ DEL/Poli e PEE/COPPE P.O. Box 68504 - CEP 21941-972 - Rio de Janeiro - RJ Brasil - http://www.gta.ufrj.br

Leia mais

Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições

Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições Prof. Alan Petrônio Pinheiro - 2011 Introdução VHDL é uma linguagem de descrição de hardware Hardware Description

Leia mais

Cleo-LIRMM: Um Experimento de Implementação de Processadores Dedicados em Plataformas de Prototipação de Sistemas Embarcados

Cleo-LIRMM: Um Experimento de Implementação de Processadores Dedicados em Plataformas de Prototipação de Sistemas Embarcados Cleo-LIRMM: Um Experimento de Implementação de Processadores Dedicados em Plataformas de Prototipação de Sistemas Embarcados Fernando Gehm Moraes 1 Ney Laert Vilar Calazans 2 Felipe Rocha da Silva 3 Maurício

Leia mais

Aula 2 Semântica de VHDL

Aula 2 Semântica de VHDL VHDL - VHSIC Hardware Description Language Aula 2 Semântica de VHDL Leonardo Augusto Casillo Ivan Saraiva Silva 2003-2 Identificadores Usados como referência a todos os objetos declarados no código. Regras:

Leia mais

Organização e Arquitetura de Computadores II

Organização e Arquitetura de Computadores II Organização e Arquitetura de Computadores II Rômulo Calado Pantaleão Camara Romulo.camara@univasf.edu.br www.univasf.edu.br/~romulo.camara 60h/02h Disciplinas Correlacionadas Programação Org. e Arq. de

Leia mais

Modelagem de Sistemas com VHDL

Modelagem de Sistemas com VHDL Modelagem de Sistemas com VHDL A abstração empregada por projetistas de sistemas digitais pode ser expressa em dois domínios: No domínio estrutural, um componente é descrito em termos de um conjunto de

Leia mais

VHDL. Descrição e Projeto de Circuitos Utilizando VHDL

VHDL. Descrição e Projeto de Circuitos Utilizando VHDL VHDL Descrição e Projeto de Circuitos Utilizando VHDL O projeto de circuitos digitais de forma automatizada se tornou prática industrial comum. As principais vantagens são : Portabilidade de tecnologia

Leia mais

CIRCUITOS SEQUENCIAIS parte 1

CIRCUITOS SEQUENCIAIS parte 1 Fundamentos de Sistemas Digitais 21/outubro/2018 CIRCUITOS SEQUENCIAIS parte 1 profs. Alexandre M. Amory e Fernando G. Moraes 1 Referências Sugiro estudarem nesta ordem de preferência: Floyd, Cap 7 até

Leia mais

LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan

LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan LABORG Parte 5 Projeto de um circuito digital de média complexidade Parte 2 Fernando Gehm Moraes Matheus Trevisan 0/maio/2015 Relógio de Xadrez 1. Em campeonatos, o xadrez é jogado usando um relógio. A

Leia mais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I. Introdução ao VHDL. César A. M. Marcon

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I. Introdução ao VHDL. César A. M. Marcon ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Introdução ao VHDL César A. M. Marcon VHDL Uma Linguagem de Descrição de Hardware 2 Originou como linguagem para descrever hardware, no contexto do programa

Leia mais

VHDL Circuitos Combinacionais

VHDL Circuitos Combinacionais VHDL Circuitos Combinacionais Neste módulo será feita uma revisão de circuitos combinacionais introduzindose alternativas representações em VHDL Uma descrição VHDL, de forma geral, pode seguir uma das

Leia mais

Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas.

Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição estrutural: Descreve como é o hardware em termos de interconexão de componentes. Descrição

Leia mais

Componentes do Computador e. aula 3. Profa. Débora Matos

Componentes do Computador e. aula 3. Profa. Débora Matos Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e

Leia mais

Descrição e Projeto de Circuitos Utilizando VHDL

Descrição e Projeto de Circuitos Utilizando VHDL Descrição e Projeto de Circuitos Utilizando VHDL O projeto de circuitos digitais de forma automatizada se tornou prática industrial comum. As principais vantagens são : Portabilidade de tecnologia Melhor

Leia mais

Módulo 4 Introdução ao VHDL

Módulo 4 Introdução ao VHDL 1 Módulo 4 Introdução ao VHDL Conceitos básicos do VHDL Modelação, Simulação e Síntese de Sistemas Digitais entity declara o interface de um componente; architecture descreve a realização de um componente;

Leia mais

low): Descreve o que o sistema deve fazer utilizando expressões lógicas.

low): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição por fluxo de dados (Data Data-Flow low): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição estrutural: Descreve como é o hardware em termos de interconexão de componentes.

Leia mais

Estrutura de um Computador

Estrutura de um Computador SEL-0415 Introdução à Organização de Computadores Estrutura de um Computador Aula 7 Prof. Dr. Marcelo Andrade da Costa Vieira MODELO DE VON NEUMANN PRINCÍPIOS A arquitetura de um computador consiste de

Leia mais

Computador Cleópatra

Computador Cleópatra ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Computador Cleópatra Interface Hardware e Software Alexandre Amory Edson Moreno 2 / 9 Nas Aulas Anteriores Vimos como descrever e implementar circuitos combinacionais

Leia mais

Estruturas de controle no nível de sentença

Estruturas de controle no nível de sentença Estruturas de controle no nível de sentença Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.

Leia mais

VHDL. Prof. Maurício A Dias Laboratório de Lógica Digital

VHDL. Prof. Maurício A Dias Laboratório de Lógica Digital VHDL Prof. Maurício A Dias Laboratório de Lógica Digital Introdução VHDL é uma linguagem para descrever sistemas digitais utilizada universalmente. Origem: VHDL é proveniente de VHSIC Hardware Description

Leia mais

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba Introdução ao VHDL Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva Original por Ayman Wahba VHDL É uma linguaguem de descrição de hardware, ou seja, uma forma estruturada para a descrição de circuitos

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP 1 Objetivos da Aula: Introdução à Linguagem VHDL Plano de Ensino Conteúdo Programático 3. Ferramentas de Desenvolvimento 3.4. Editor de texto (programação VHDL ou

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP 1 Objetivos da Aula: Linguagem VHDL Bibliotecas e Tipos de Dados STD STD_LOGIC_1164 Constantes, Variáveis, Sinais, Arrays, Range Expressões (Operadores) Exemplos

Leia mais

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2) Arquitectura de um computador Caracterizada por: Conjunto de instruções do processador (ISA Estrutura interna do processador (que registadores existem, etc Modelo de memória (dimensão endereçável, alcance

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

TIPO INTEGER. Profa. Luiza Maria Romeiro Codá 2

TIPO INTEGER. Profa. Luiza Maria Romeiro Codá 2 TIPO INTEGER 2 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FF3_tipoD_nivel IS PORT(CLK, RST, SET : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(2 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END FF3_tipoD_nivel;

Leia mais

LABORG. Parte 1 Introdução à Simulação em VHDL. Fernando Moraes e Ney Laert Vilar Calazans

LABORG. Parte 1 Introdução à Simulação em VHDL. Fernando Moraes e Ney Laert Vilar Calazans LABORG Parte 1 Introdução à Simulação em VHDL Fernando Moraes e Ney Laert Vilar Calazans atualização - 05/agosto/2013 Mais informações sobre VHDL Web sites sobre VHDL e assuntos relacionados http://www.asic-world.com/vhdl/links.html

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão.

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão. 14 3.2 Projeto da Unidade de Controle (VHDL) 3.2.1 Diagrama ASM (Algorithmic State Machine) ASM é um fluxograma através do qual se representa a seqüência de ações que a unidade de controle de um sistema

Leia mais

Programação Básica em Arduino Aula 2

Programação Básica em Arduino Aula 2 Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas

Leia mais

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa. Máquina Multinível Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa. Uma instrução pode ser definida como um comando para o processador.

Leia mais

Lab 3. Timing Timing Constraints Simulação

Lab 3. Timing Timing Constraints Simulação Lab 3 Timing Timing Constraints Simulação A. Mariano - 2014 1 VHDL processes Para um designer, process é um bloco de instruções que funciona de maneira sequencial e que é chaveado quando algum dos sinais

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 2 - O NÍVEL DA MICROARQUITETURA 1. INTRODUÇÃO Este é o nível cuja função é implementar a camada ISA (Instruction Set Architeture). O seu projeto depende da arquitetura do conjunto das instruções

Leia mais

Introdução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA

Introdução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA Introdução VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits Origem: Departamento de Defesa EUA desenvolvida entre anos 70 e 80 descrever e modelar circuitos complexos

Leia mais

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete - 1 - V 1.0 - De: 02/maio/2012 por Ney Calazans Laboratório de Organização de Computadores-EC V 3.2 - De: 21/abril/2013 por Fernando Gehm Moraes e Ney Calazans Implementação de um Sistema Digital em VHDL

Leia mais

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL.

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL. Introdução à VHDL Gustavo G. Parma Assunto: Introdução à VHDL. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL. 1 Introdução Teórica VHDL, VHSIC (Very High Speed Integrated

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

Computador Cleópatra

Computador Cleópatra ORGNIZÇÃO E RQUITETUR DE COMPUTDORES Computador Cleópatra Introdução a rquitetura e Programação lexandre mory Edson Moreno 2 / 9 Na ula nterior bstração em Software Programa em linguagem C Programa em

Leia mais

Edeyson Andrade Gomes

Edeyson Andrade Gomes Sistemas Operacionais Conceitos de Arquitetura Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Máquinas de Níveis Revisão de Conceitos de Arquitetura 2 Máquina de Níveis Máquina de níveis Computador

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP 1 Objetivos da Aula: Introdução à Linguagem VHDL Plano de Ensino Conteúdo Programático 3. Ferramentas de Desenvolvimento 3.4. Editor de texto (programação VHDL ou

Leia mais

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO O seguinte artigo apresenta uma UCP hipotética construída no software simulador DEMOWARE Digital Works 3.04.39. A UCP (Unidade Central de Processamento)

Leia mais

28/9/2010. Unidade de Controle Funcionamento e Implementação

28/9/2010. Unidade de Controle Funcionamento e Implementação Arquitetura de Computadores Unidade de Controle Funcionamento e Implementação Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Operação da Unidade de Controle Unidade de controle: parte do

Leia mais

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva Registradores Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva 2 Registradores Conjunto de elementos de memória (flip-flops ou latches) utilizados para armazenar n bits. Utilizam um único sinal de

Leia mais

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores. Ivan Saraiva Silva Arquitetura de Computadores Introdução Ivan Saraiva Silva Sumário Introdução Bibliografia Recomendada O que é um computador Organização de um Computador Modelo de Von Neumann IAS Máquina de Von Neuman

Leia mais

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM)

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM) Instituto Federal de Santa Catarina Área de Telecomunicações SST20707 Síntese de Sistemas de Telecomunicações Prof. Roberto de Matos Aviso de direitos Autorais: Transparências baseadas no trabalho do Prof.

Leia mais

Introdução à Arquitetura de Computadores

Introdução à Arquitetura de Computadores 1 Introdução à Arquitetura de Computadores Hardware e software Organização de um computador: Processador: registradores, ALU, unidade de controle Memórias Dispositivos de E/S Barramentos Linguagens de

Leia mais

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE CIÊNCIAS DA COMPUTAÇÃO Rafael Vargas Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Leia mais

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr hlima@cbpf.br

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr hlima@cbpf.br G03 Eletrônica Digital para Instrumentação Prof: hlima@cbpf.br Centro Brasileiro de Pesquisas Físicas Ministério da Ciência, Tecnologia e Inovação (MCTI) Eletrônica Digital para Instrumentação Objetivo

Leia mais

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL PL/SQL Laboratório de Bases de Dados PL/SQL Program Language SQL linguagem de programação da Oracle que permite processar dados armazenados no banco de dados Exemplos de operações permitidas alterar, remover,

Leia mais

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir. O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline Todos os estágios devem estar prontos ao mesmo tempo para prosseguir O tempo requerido para mover uma instrução

Leia mais

Exercícios Referentes à Prova P2

Exercícios Referentes à Prova P2 ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Exercícios Referentes à Prova P2 prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno 2 / 11 Exercícios 1. Faça um programa VHDL de uma máquina

Leia mais

Nível da Microarquitetura

Nível da Microarquitetura Nível da Microarquitetura (Aula 10) Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Agradecimentos: Camilo Calvi - LPRM/DI/UFES Máquina de Vários Níveis Modernas (ISA)

Leia mais

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Aula 5-P Processos em VHDL. Comandos de atribuição em VHDL:

Leia mais

Prof. Leonardo Augusto Casillo

Prof. Leonardo Augusto Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 3 Introdução ao VHDL Prof. Leonardo Augusto Casillo O que significa VHDL? Very High Speed Integrated Circuit Hardware Description

Leia mais

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

CIRCUITOS COMBINACIONAIS

CIRCUITOS COMBINACIONAIS Fundamentos de Sistemas Digitais 04/outubro/2018 CIRCUITOS COMBINACIONAIS modelagem VHDL profs. Alexandre M. Amory e Fernando G. Moraes 1 (1) (DE)CODIFICADOR Codificador é um circuito que mapeia um conjunto

Leia mais

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto: Processadores BIP A família de processadores BIP foi desenvolvida por pesquisadores do Laboratório de Sistemas Embarcados e Distribuídos (LSED) da Universidade do Vale do Itajaí UNIVALI com o objetivo

Leia mais

2 Formalidades referentes ao trabalho

2 Formalidades referentes ao trabalho Bacharelado em Ciência da Computação DINF / UFPR Projetos Digitais e Microprocessadores 1 o Semestre de 2006 MICO-v12.r0 07/03/2006 Profs. Luis Allan Künzle e Armando Luiz Nicolini Delgado Atenção: Este

Leia mais

Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação

Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação 1 Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação Prática:

Leia mais

Lógica Reconfigurável

Lógica Reconfigurável UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA Lógica Reconfigurável - amauriassef@utfpr.edu.br

Leia mais

Introdução à Linguagem VHDL

Introdução à Linguagem VHDL Fundamentos de Sistemas Digitais Introdução à Linguagem VHDL prof. Dr. Alexandre M. Amory Referências Sugiro estudarem nesta ordem de preferência: Vahid, Cap 9 Ignorar verilog e SystemC Bem didático! um

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).

Leia mais

VHDL - VHSIC Hardware Description Language. Exemplo prático. Raiz Quadrada

VHDL - VHSIC Hardware Description Language. Exemplo prático. Raiz Quadrada VHDL - VHSIC Hardware Description Language Exemplo prático Raiz Quadrada Exemplo de um circuito completo Descrição de um circuito que realiza a raiz quadrada de um número natural; Obtenção de um modelo

Leia mais

CMP238 Projeto e Teste de Sistemas VLSI

CMP238 Projeto e Teste de Sistemas VLSI CMP238 Projeto e Teste de Sistemas VLSI Projeto Prof. Fernanda Gusmão de Lima Kastensmidt fglima@inf.ufrgs.br Conteúdo descrição lógica de alto nível (VHDL): componentes da plataforma como memória, contadores,

Leia mais

Algumas questões de prova recentes com seus gabaritos

Algumas questões de prova recentes com seus gabaritos Algumas questões de prova recentes com seus gabaritos Q1 Uma das formas mais simples e mais usadas de detecção de erros na transmissão de dados digitais são os códigos de paridade. Estes consistem em acrescentar

Leia mais

Índice. Tudo! (datapath de um ciclo)

Índice. Tudo! (datapath de um ciclo) Índice Sumário Instrução com atraso maior no datapath de um ciclo. Datapath multiciclo: introdução. 4. O Processador: Unidades de Caminho de Dados e de o 4.1 Diagrama de Blocos de um Processador 4.2 Unidade

Leia mais

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

FUNCTION ) RETURNS INTEGER AS $$ DECLARE PERFORM O comando PERFORM permite a execução de um comando SELECT desprezando o resultado do comando. PERFORM query; A variável especial FOUND é definida como verdadeiro se a instrução produzir pelo menos

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Pipeline Slide 1 Pipeline Pipeline Hazards: Hazards Estruturais Hazards de Dados Hazards de Controle Organização e Arquitetura de Computadores I Caminho de Dados

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

Circuitos Seqüenciais

Circuitos Seqüenciais Circuitos Seqüenciais Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva Circuitos Seqüenciais Um circuito seqüencial síncrono consiste de um circuito combinacional e uma rede de memória formada por

Leia mais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01 Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal

Leia mais

INTRODUÇÃO OBJECT PASCAL/DELPHI

INTRODUÇÃO OBJECT PASCAL/DELPHI Introdução Object Pascal/Delphi 1 INTRODUÇÃO OBJECT PASCAL/DELPHI Objetivo Demonstrar a sintaxe e a semântica do Object Pascal e a forma como esse linguagem de programação será aplicada na disciplina de

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

Fundamentos de sistemas digitais. Test-bench. prof. Dr. Edson Ifarraguirre Moreno

Fundamentos de sistemas digitais. Test-bench. prof. Dr. Edson Ifarraguirre Moreno Fundamentos de sistemas digitais Test-bench prof. Dr. Edson Ifarraguirre Moreno 2 / 8 Validação por Simulação Utilizar um circuito de teste: test-bench Contém um circuito gerador de teste e uma instância

Leia mais

CIRCUITOS SEQUENCIAIS parte 2 Máquina de Estados Finita (FSM)

CIRCUITOS SEQUENCIAIS parte 2 Máquina de Estados Finita (FSM) Fundamentos de Sistemas Digitais 3/outubro/28 CIRCUITOS SEQUENCIAIS parte 2 Máquina de Estados Finita (FSM) profs. Alexandre M. Amory e Fernando G. Moraes Máquina de estados finita (FSM) Uma máquina de

Leia mais

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

PCS3225. Sistemas Digitais II. Biestáveis em VHDL. Biestáveis em VHDL. Marcos A. Simplicio Jr.

PCS3225. Sistemas Digitais II. Biestáveis em VHDL. Biestáveis em VHDL. Marcos A. Simplicio Jr. PCS3225 Sistemas Digitais II Biestáveis em VHDL Marcos A. Simplicio Jr. Slides baseados em material de Edson Midorikawa e Bruno Albertini PCS3225-2015 1 Tópicos VHDL: recapitulação Circuitos sequenciais

Leia mais

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr G03 Eletrônica Digital para Instrumentação Prof: hlima@cbpf.br Centro Brasileiro de Pesquisas Físicas Ministério da Ciência, Tecnologia e Inovação (MCTI) PACOTES (package) Entidades e Arquiteturas são

Leia mais

Circuitos Seqüenciais

Circuitos Seqüenciais ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Circuitos Seqüenciais Contadores prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno 2 / 8 Introdução Contadores são circuitos de natureza

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01 IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

A Figura 1 mostra uma organização do NEANDER com uma UAL de 6 funções. Figura 1: Organização para o NEANDER.

A Figura 1 mostra uma organização do NEANDER com uma UAL de 6 funções. Figura 1: Organização para o NEANDER. Disciplina: Arquitetura de Computadores Turma: 3CC Data: 18/12/12 Nota: Professor: Renato E. N. de Moraes Semestre: 2012-2 Valor: 2,0 pt Aluno: Trabalho 01 - Projeto Neander O computador NEANDER foi criado

Leia mais

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES PROCESSADORES CHIPS TRANSISTORES O que é um chip? - conhecido como circuito integrado; - pequeno e fino pedaço de silício no qual os transistores, que formam o microprocessador, foram encapsulados; - processadores

Leia mais

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos. 3 COMANDOS CONDICIONAIS E DE LAÇO Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos. 3.1 COMANDOS CONDICIONAIS 3.1.1 Comando IF Como o próprio nome já indica, estes comandos

Leia mais

Circuitos sequenciais elementares

Circuitos sequenciais elementares Circuitos sequenciais elementares João Canas Ferreira Arquitectura de Computadores FEUP/LEIC Contém figuras de Computer Organization and esign,. Patterson & J. Hennessey, 3ª. ed., MKP ópicos Sistemas sequenciais

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 5 Estrutura de Sistemas de Computação Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

SISTEMAS DIGITAIS. Linguagem de Descrição de Hardware VHDL. Prof. Fernanda Gusmão de Lima Kastensmidt

SISTEMAS DIGITAIS. Linguagem de Descrição de Hardware VHDL. Prof. Fernanda Gusmão de Lima Kastensmidt SISTEMAS DIGITAIS Linguagem de Descrição de Hardware VHDL Prof. Fernanda Gusmão de Lima Kastensmidt fglima@inf.ufrgs.br 7 e 8 Comandos Sequencias Comandos Sequenciais Execução de acordo com a ordem com

Leia mais

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP. A ARQUITETURA DE UM COMPUTADOR A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957),

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

Portas lógicas e circuitos digitais. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Portas lógicas e circuitos digitais. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Portas lógicas e circuitos digitais Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Portas Circuito somador Circuito subtrator flip-flops (registradores)

Leia mais

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

Leia mais