Difference between revisions of "DCM module VHDL code"
From Tech
Jump to navigationJump to search| Line 264: | Line 264: | ||
1. The specified design element actually exists in the original design. |
1. The specified design element actually exists in the original design. |
||
2. The specified object is spelled correctly in the constraint source file.</nowiki> |
2. The specified object is spelled correctly in the constraint source file.</nowiki> |
||
| − | Then the solution is simple: <b>DO NOT INCLUDE the <tt>DCM_arwz.ucf</tt> file generated by IP CoreGenerator! |
+ | Then the solution is simple: <b>DO NOT INCLUDE</b> the <tt>DCM_arwz.ucf</tt> file generated by IP CoreGenerator! |
So, IGNORE the following file in <tt>ipcore_dir</tt>: |
So, IGNORE the following file in <tt>ipcore_dir</tt>: |
||
Revision as of 23:52, 21 April 2013
With the following 3 files, the DCM module can be made to work without the IP CORE generator.
Top level LEDtest.vhdl:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity LEDtest is
port (
clk_in: in std_logic;
LED1: out std_logic;
LED2: out std_logic
);
end LEDtest;
architecture BEHAVIOUR of LEDtest is
component DCM71 port ( CLKIN_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 count: integer range 0 to 32000000 := 0;
signal clk: std_logic;
signal clk0: std_logic;
signal sec:integer range 0 to 3600 :=0;
signal duration: integer range 0 to 32000000 := 1000000;
signal tmp: std_logic_vector(0 downto 0);
begin
Inst_DCM71: DCM71 port map(
CLKIN_IN =>clk_in,
CLKFX_OUT =>clk,
CLKIN_IBUFG_OUT =>open,
CLK0_OUT =>clk0,
LOCKED_OUT =>open);
IN_process: process (clk)
begin
if clk'event and clk = '1' then
count<=count+1;
if count<duration then
LED1<='1';
else
LED1<='0';
end if;
LED2<=tmp(0);
if count=31999999 then
count<=0;
sec<=sec+1;
tmp <=conv_std_logic_vector(sec, 1);
if sec=9 then
sec<=0;
duration<=16000000;
else
duration<=10000000;
end if;
end if;
end if;
end process;
end BEHAVIOUR;
The DCM71.vhdl file (I call it '71' as it's supposed to convert a 25MHz clock into 71.428...MHz):
--------------------------------------------------------------------------------
-- Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved.
--------------------------------------------------------------------------------
-- ____ ____
-- / /\/ /
-- /___/ \ / Vendor: Xilinx
-- \ \ \/ Version : 12.4
-- \ \ Application : xaw2vhdl
-- / / Filename : DCM71.vhd
-- /___/ /\ Timestamp : 04/18/2013 14:47:31
-- \ \ / \
-- \___\/\___\
--
--Command: xaw2vhdl-st C:\\Xilinx\12.4\ISE_DS\ISE\.\DCM71.xaw C:\\Xilinx\12.4\ISE_DS\ISE\.\DCM71
--Design Name: DCM71
--Device: xc3s500e-4vq100
--
-- Module DCM71
-- Generated by Xilinx Architecture Wizard
-- Written for synthesis tool: XST
-- Period Jitter (unit interval) for block DCM_SP_INST = 0.08 UI
-- Period Jitter (Peak-to-Peak) for block DCM_SP_INST = 1.06 ns
library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.ALL;
library UNISIM;
use UNISIM.Vcomponents.ALL;
entity DCM71 is
port ( CLKIN_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 DCM71;
architecture BEHAVIORAL of DCM71 is
signal CLKFB_IN : std_logic;
signal CLKFX_BUF : std_logic;
signal CLKIN_IBUFG : std_logic;
signal CLK0_BUF : std_logic;
signal GND_BIT : std_logic;
begin
GND_BIT <= '0';
CLKIN_IBUFG_OUT <= CLKIN_IBUFG;
CLK0_OUT <= CLKFB_IN;
CLKFX_BUFG_INST : BUFG
port map (I=>CLKFX_BUF,
O=>CLKFX_OUT);
CLKIN_IBUFG_INST : IBUFG
port map (I=>CLKIN_IN,
O=>CLKIN_IBUFG);
CLK0_BUFG_INST : BUFG
port map (I=>CLK0_BUF,
O=>CLKFB_IN);
DCM_SP_INST : DCM_SP
generic map( CLK_FEEDBACK => "1X",
CLKDV_DIVIDE => 2.0,
CLKFX_DIVIDE => 7,
CLKFX_MULTIPLY => 25,
CLKIN_DIVIDE_BY_2 => FALSE,
CLKIN_PERIOD => 50.000,
CLKOUT_PHASE_SHIFT => "NONE",
DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS",
DFS_FREQUENCY_MODE => "LOW",
DLL_FREQUENCY_MODE => "LOW",
DUTY_CYCLE_CORRECTION => TRUE,
FACTORY_JF => x"C080",
PHASE_SHIFT => 0,
STARTUP_WAIT => FALSE)
port map (CLKFB=>CLKFB_IN,
CLKIN=>CLKIN_IBUFG,
DSSEN=>GND_BIT,
PSCLK=>GND_BIT,
PSEN=>GND_BIT,
PSINCDEC=>GND_BIT,
--RST=>RST_IN,
RST=>GND_BIT,
CLKDV=>open,
CLKFX=>CLKFX_BUF,
CLKFX180=>open,
CLK0=>CLK0_BUF,
CLK2X=>open,
CLK2X180=>open,
CLK90=>open,
CLK180=>open,
CLK270=>open,
LOCKED=>LOCKED_OUT,
PSDONE=>open,
STATUS=>open);
end BEHAVIORAL;
And the contraints.ucf file:
# Crystal Clock - use 32MHz onboard oscillator NET "clk_in" LOC = "P89" | IOSTANDARD = LVCMOS25 | PERIOD = 31.25ns ; # Wing1 Column A NET "LED1" LOC = "P91"; NET "LED2" LOC = "P92";
If you encounter errors like these:
ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:NgdBuild:981 - Could not find any associations for the following constraint: ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST CLK_FEEDBACK = 1X;> [constraints.ucf(12)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST CLKDV_DIVIDE = 2.0;> [constraints.ucf(13)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST CLKFX_DIVIDE = 7;> [constraints.ucf(14)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST CLKFX_MULTIPLY = 25;> [constraints.ucf(15)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST CLKIN_DIVIDE_BY_2 = FALSE;> [constraints.ucf(16)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST CLKIN_PERIOD = 50.000;> [constraints.ucf(17)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST CLKOUT_PHASE_SHIFT = NONE;> [constraints.ucf(18)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST DESKEW_ADJUST = SYSTEM_SYNCHRONOUS;> [constraints.ucf(19)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST DFS_FREQUENCY_MODE = LOW;> [constraints.ucf(20)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST DLL_FREQUENCY_MODE = LOW;> [constraints.ucf(21)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST DUTY_CYCLE_CORRECTION = TRUE;> [constraints.ucf(22)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST FACTORY_JF = C080;> [constraints.ucf(23)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST PHASE_SHIFT = 0;> [constraints.ucf(24)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file. ERROR:ConstraintSystem:59 - Constraint <INST DCM_SP_INST STARTUP_WAIT = FALSE;> [constraints.ucf(25)]: INST "DCM_SP_INST" not found. Please verify that: 1. The specified design element actually exists in the original design. 2. The specified object is spelled correctly in the constraint source file.
Then the solution is simple: DO NOT INCLUDE the DCM_arwz.ucf file generated by IP CoreGenerator!
So, IGNORE the following file in ipcore_dir:
# Generated by Xilinx Architecture Wizard # --- UCF Template Only --- # Cut and paste these attributes into the project's UCF file, if desired INST DCM_SP_INST CLK_FEEDBACK = 1X; INST DCM_SP_INST CLKDV_DIVIDE = 2.0; INST DCM_SP_INST CLKFX_DIVIDE = 7; INST DCM_SP_INST CLKFX_MULTIPLY = 25; INST DCM_SP_INST CLKIN_DIVIDE_BY_2 = FALSE; INST DCM_SP_INST CLKIN_PERIOD = 50.000; INST DCM_SP_INST CLKOUT_PHASE_SHIFT = NONE; INST DCM_SP_INST DESKEW_ADJUST = SYSTEM_SYNCHRONOUS; INST DCM_SP_INST DFS_FREQUENCY_MODE = LOW; INST DCM_SP_INST DLL_FREQUENCY_MODE = LOW; INST DCM_SP_INST DUTY_CYCLE_CORRECTION = TRUE; INST DCM_SP_INST FACTORY_JF = C080; INST DCM_SP_INST PHASE_SHIFT = 0; INST DCM_SP_INST STARTUP_WAIT = FALSE;