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

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 mais

Tutorial -‐ Xilinx ISE

Tutorial -‐ Xilinx ISE library  IEEE; use  IEEE.STD_LOGIC_1164.ALL; use  ieee.numeric_std.ALL; library  UNISIM; use  UNISIM.Vcomponents.ALL;

Leia mais

Apresentação da Aula11. - DECOM

Apresentaçã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