Anotações relatório 1 O código cedido pelo professor
Transcrição
Anotações relatório 1 O código cedido pelo professor
Anotações relatório 1 O código cedido pelo professor, possuia um erro proposital, no sentido de que se dividia a frequência do clock interno da FPGA por (n+1). Nota do professor: o aluno errou em interpretar o texto VHDL como sendo de um divisor de frequências por n, o professor não declarou nem escreveu isso, não sendo necessária nenhuma correção, basta aceitar o fato da divisão por n+1. Ao fazer alteração do código, indicar porque, como e onde foi feita. Código final VHDL ---------------------------------------------------------------------------------- Company: UFRJ - Escola Politécnica - Eletrônica e Computação -- Professor : Mário Vaz -- Aluno : Vinicius Allemand Mancebo Pinto -- Create Date: 13:57:15 13/03/2014 -- Design Name: clk_div -- Module Name: clk_div - Behavioral -- Project Name: BT -- Target Devices: Spartan3AN Starter Kit -- Tool versions: ISE 14 -- Description: divide a frequência de clock por n -- Dependencies: library IEEE -- Revision 0.01 - File Created -- Additional Comments: data 20/03/2014 -- Foi adicionado ao código VHDL uma ligação direta do sinal de clock interno da FPGA -- para um pino de saída de forma a se verificar a precisão da frequência da saída -- do clock da placa. -- Foi percebido, através de medidas, que o código VHDL dividia a frequência por (n+1). -- Foi corrigido o código assim que se percebeu tal erro. -- O erro era que se atribuía o valor 0 ao cnt1 ao invés de 1, fazendo com que o -- teste para que comparar se o contador era maior ou igual a n desse true no caso -- n = 6. --------------------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.ALL; entity clk_div is generic (n : integer := 5); port (clk_in : in std_logic; clo : out std_logic; div : out std_logic; div2 : out std_logic ); attribute LOC : string; attribute LOC of clk_in : signal is "E12"; attribute LOC of clo : signal is "V17"; attribute LOC of div : signal is "R20"; attribute LOC of div2 : signal is "Y18"; attribute FAST : string; attribute FAST of div2 : signal is "TRUE"; end clk_div; architecture divide of clk_div is signal cnt, cnt1 : integer := 0; signal div_temp, div_temp2 : std_logic := '0'; begin clo <= clk_in; div <= div_temp; div2 <= div_temp2; process (clk_in) begin if (clk_in'event and clk_in = '1') then if cnt >= 50000000 then div_temp <= not(div_temp); cnt <= 1; else div_temp <= div_temp; cnt <= cnt + 1; end if; end if; if (clk_in'event and clk_in = '0') then if cnt1 >= n then cnt1 <= 1; div_temp2 <= '1'; else div_temp2 <= '0'; cnt1 <= cnt1 + 1; end if; end if; end process; end divide; anotações pro tutorial o uso do & no comando ao chamar o ISE é opcional pois não haverá uso do terminal durante o uso do ISE. O comando & apenas faz com que o ISE seja rodado em background, deixando o terminal ativo. Para se salvar um projeto em pen drive deve-se primeiro usar a pasta mount do root do linux para que, em seguida, seja possível salvar o projeto em disco removÃvel. tem modo mais fácil A pasta workspace não deve ser usada para salvar os projetos em virtude de ser uma pasta que tem seu conteúdo removido a cada semana. De preferência, use a pasta "temp" para evitar possível uso excessivo de memória, já que o ISE pode executar simulações na casa de GB. Com arquivos desse tamanho é possível que o ISE use toda a memória RAM da cpu, fazendo com que o computador trave. Caso isso ocorra, é necessário liberar a memória de maneira manual. workspace ou tmp ? explicaar melhor onde ficam estes arquivos temporários e suas limitações /var/tmp : Temporary files preserved between system reboots Purpose The /var/tmp directory is made available for programs that require temporary files or directories that are preserved between system reboots. Therefore, data stored in /var/tmp is more persistent than data in /tmp. Files and directories located in /var/tmp must not be deleted when the system is booted. Although data stored in /var/tmp is typically deleted in a site-specific manner, it is recommended that deletions occur at a less frequent interval than /tmp. Ao dar archive no projeto, salve os arquivos em sua área privada/pública (fica a seu critério), pois caso o arquivo seja salvo na área tmp, ele será apagado depois de algum tempo. Para se executar o arquivo em outra ocasião, dê unzip no arquivo para a área tmp para evitar o erro de excesso de memória usada pelo ISE(conforme recomendado quando feita ao iniciar um projeto no ISE). foi recomendado public para permitir a leitura por outros alunos. DCM => dispositivo da FPGA que faz o sincronismo entre os clocks internos e externos da placa, visando eliminar ruídos e possibilitando trabalhar em frequências grandes, como em 400MHZ. A Spartan 3-AN possui um DCM em cada quadrante da placa, possibilitando usar 4 clocks diferentes em cada quadrante. Na aula do dia 27/03/2014, implementamos o DCM no projeto do clock_div.s Para abrir o DCM, ao clicar em new sorce, selecionar o tipo IP CORE GENERATOR, colocar um nome que não seja simplesmente "DCM", por exemplo, DCMmeuNome. Na hora de dar os parâmetros ao DCM, desmarcar o reset e selecionar o CLKFX. ---------------------------------------------------------------------------------- Company: UFRJ - Escola Politécnica - Eletrônica e Computação -- Professor : Mário Vaz -- Aluno : Vinicius Allemand -- Create Date: 13:49 27/03/2014 -- Design Name: base_tempo -- Module Name: clk_div - Behavioral -- Project Name: BT -- Target Devices: Spartan3AN Starter Kit -- Tool versions: ISE 14 -- Description: -- Dependencies: library IEEE -- Revision 0.01 - File Created -- Additional Comments: --------------------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity base_tempo is port(clk : in std_logic; clk_out, clk_out2 : out std_logic; locked : out std_logic); end entity; attribute attribute attribute attribute attribute attribute LOC LOC LOC LOC LOC LOC : string ; of reset : signal is "V8"; of clk_out : signal is "T19"; of clk_out2 : signal is "V15"; of LCKD_OUT : signal is "W21"; of clk : signal is "E12"; use IEEE.NUMERIC_STD.ALL; library UNISIM; use UNISIM.VComponents.all; architecture Structural of base_tempo is component clk_div is generic (n : integer := 2) port(clk_in : in std_logic; div : out std_logic; div2 : out std_logic;) end component; --component dcm1 is -port( -CLKIN_IN : IN std_logic; -RST_IN : IN std_logic; -CLKFX_OUT : OUT std_logic; -CLKIN_IBUFG_OUT : OUT std_logic; -CLK0_OUT : OUT std_logic; -LOCKED_OUT : OUT std_logic -); --end component; signal clk_int : std_logic; -- Notes: -- 1) This instantiation template has been automatically generated using types -- std_logic and std_logic_vector for the ports of the instantiated module -- 2) To use this template to instantiate this entity, cut-and-paste and then edit begin ------- Inst_dcm1: dcm1 port map( CLKIN_IN => clk, CLKFX_OUT => clk_int, CLKIN_IBUFG_OUT => open, CLK0_OUT => open, LOCKED_OUT => locked ); clk_div : clk_div port map (clk_in => clk_int, div => clk_out, div2 => clk_out2); end Structural;
Documentos relacionados
Segundo Trabalho de Sistemas Digitais
A Figura 4 mostra a terceira parte do código que será a lógica de funcionamento do divisor de frequências. Quatro sinais internos são usados como parte da lógica. Dois serão contadores e serão os ...
Leia maisTutorial -‐ Xilinx ISE
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.ALL; library UNISIM; use UNISIM.Vcomponents.ALL;
Leia maisApresentação da Aula11. - DECOM
---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; Descomente --use UNISIM.VComponents.all; entity Start_AC97 is end Start_...
Leia mais