Vhdl 50兆赫至64千赫频率

Vhdl 50兆赫至64千赫频率,vhdl,Vhdl,我收到了类似这样的警告 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,

我收到了类似这样的警告

警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:1290-分层块在块中未连接。 它将从设计中删除。 警告:Xst:1290-分层块在块中未连接。 它将从设计中删除。 警告:Xst:1290-分层块在块中未连接。 它将从设计中删除。 警告:Xst:524-块实例的所有输出在块中未连接。 此实例将与所有底层逻辑一起从设计中删除 警告:Xst:2677-块中顺序类型的节点未连接。 警告:Xst:1710-FF/Latch(无初始值)在块中的常量值为0。此FF/闩锁将在优化过程中进行修剪。 警告:Xst:1895-由于其他FF/Latch微调,FF/Latch(不带初始值)在块中的常量值为0。此FF/闩锁将在优化过程中进行修剪。 警告:Xst:1895-由于其他FF/Latch微调,FF/Latch(不带初始值)在块中的常量值为0。此FF/闩锁将在优化过程中进行修剪。 警告:Xst:1895-由于其他FF/Latch微调,FF/Latch(不带初始值)在块中的常量值为0。此FF/闩锁将在优化过程中进行修剪。 警告:Xst:1895-由于其他FF/Latch微调,FF/Latch(不带初始值)在块中的常量值为0。此FF/闩锁将在优化过程中进行修剪。 警告:Xst:1895-由于其他FF/Latch微调,FF/Latch(不带初始值)在块中的常量值为0。此FF/闩锁将在优化过程中进行修剪

-- ///////// 50MHz to 64KHz ///////////
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use ieee.numeric_std.all;
    use ieee.std_logic_arith.all;
    use ieee.std_logic_unsigned.all;

    entity clk64kHz is -- input freq 50MHz and output is 64MHz
        Port (
            clk    : in  STD_LOGIC;
            reset  : in  STD_LOGIC;
            clk_out: out STD_LOGIC
        );
    end clk64kHz;

    architecture Behavioral of clk64kHz is
        signal temporal: STD_LOGIC := '0';
        signal counter : STD_LOGIC_VECTOR (8 downto 0) := "000000000";
    begin
        freq_divider: process (reset, clk) begin
            if (reset = '1') then
                temporal <= '0';
                counter  <= "000000000";
            elsif rising_edge(clk) then
                if (counter = "110000110") then -- conuter 50MHz/64KHz = 790/2 = 110000110 50% duty cycle
                    temporal <= NOT(temporal);
                    counter  <= "000000000";
                else
                    counter <= counter + 1;
                end if;
            end if;
        end process;

        clk_out <= temporal;
    end Behavioral;

    -- /////////////// time period of 10ms //////////////////
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.NUMERIC_STD.ALL;
    use ieee.std_logic_arith.all;
    use ieee.std_logic_unsigned.all;


    entity counter_10ms is
        Port ( clk_out : in  STD_LOGIC := '0';
               reset : in  STD_LOGIC;
               counter_out : out  STD_LOGIC_vector(9 downto 0) := "0000000000");
    end counter_10ms;


    architecture Behavioral of counter_10ms is

        signal cnt : std_logic_vector (9 downto 0) := "0000000000"; 
           -- Counter, from 0 to 640 (10msx64Khz=1010000000)
    begin

        counter: process (clk_out,reset) 
         begin
            if (reset = '1') then
                cnt <= "0000000000";
            elsif rising_edge(clk_out) then
                  if (cnt = "1010000000") then
                        cnt <= ("0000000000");
                else
                    cnt <= cnt + 1;
                end if;
            end if;
        end process;
     counter_out <= cnt;
    end Behavioral;

    --//////////////////////////////////// decoder/////////////////////////////////////////////

    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;


    entity decoder_4to10 is
        Port ( clk_out :in std_logic;
                data_in : in  STD_LOGIC_VECTOR (3 downto 0);
               data_out : out  STD_LOGIC_VECTOR (9 downto 0));
    end decoder_4to10;

    architecture Behavioral of decoder_4to10 is
    -- signal clk_out : std_logic := '0';
    begin

    decoder_process : process (data_in,clk_out)
    begin

    case (data_in) is

                when "0000" => data_out <= "0001000000";
                when "0001" => data_out <= "0010000000";
                when "0010" => data_out <= "0011000000";
                when "0011" => data_out <= "0100000000";
                when "0100" => data_out <= "0101000000";
                when "0101" => data_out <= "0110000000";
                when "0110" => data_out <= "0111000000";
                when "0111" => data_out <= "1000000000";
                when "1000" => data_out <= "1001000000";
                when "1001" => data_out <= "1010000000";
                when others => data_out <= "0000000000";
    end case;
    end process decoder_process;

    end Behavioral;

    -- ////////////////// comparator ////////////////////////
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;


    entity comparator is
        Port ( data_in : in  STD_LOGIC_VECTOR (3 downto 0);
                  reset : in    STD_LOGIC;
                  clk : in std_logic :='0';
                  pwm_out : out  STD_LOGIC);

    end comparator;

    architecture Behavioral of comparator is

    signal counter_out : std_logic_vector (9 downto 0):= "0000000000";
    -- signal data_in : std_logic_vector (3 downto 0);
    -- signal clk: std_logic :=0;

    begin

    my_process : process (clk,reset,data_in)

    begin

    if rising_edge(clk) then

          if reset ='1' then
         pwm_out <= '0';

    elsif counter_out < data_in then

    pwm_out <= '1';

    else

    pwm_out <= '0';
    end if;
          end if;
    end process;

    end Behavioral;

    -- ////////////  top module //////////////////

    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use ieee.numeric_std.all;
    use ieee.std_logic_arith.all;
    use ieee.std_logic_unsigned.all;

    entity pwm_10ms is
        Port (
                clk: in std_logic;
                reset : in  STD_LOGIC;
               data_in : in  STD_LOGIC_VECTOR(3 downto 0);
               pwm_out : out  STD_LOGIC);
    end pwm_10ms;

    architecture Behavioral of pwm_10ms is

    component clk64kHz is -- input freq 50MHz and output is 64MHz
        Port (
            clk    : in  STD_LOGIC;
            reset  : in  STD_LOGIC;
            clk_out: out STD_LOGIC);
    end component;

    component counter_10ms is
        Port ( clk_out : in  STD_LOGIC := '0';
               reset : in  STD_LOGIC;
               counter_out : out  STD_LOGIC_VECTOR (9 downto 0));
    end component;

    component decoder_4to10 is
        Port ( clk_out :in std_logic;
         data_in : in  STD_LOGIC_VECTOR (3 downto 0);
               data_out : out  STD_LOGIC_VECTOR (9 downto 0));
    end component;

    component comparator is
        Port ( data_in : in  STD_LOGIC_VECTOR (3 downto 0);
                  reset : in    STD_LOGIC;
                  clk : in std_logic :='0';
                  pwm_out : out  STD_LOGIC);

    end component;

    -- signal clk :std_logic := '0';
    signal clk_out : std_logic:= '0';
    signal counter_out :std_logic_vector (9 downto 0):= "0000000000";
    signal data_out : std_logic_vector(9 downto 0) := "0000000000";
    -- signal data_in : std_logic_vector (3 downto 0) := "0000";

    begin

    clk64KHz_map    : clk64KHz PORT MAP(clk,reset,clk_out);
    counter_map     : counter_10ms PORT MAP(clk_out,reset,counter_out);
    decoder_map     : decoder_4to10 PORT MAP(clk_out,data_in,data_out);
    comparator_map  : comparator PORT MAP (data_in,reset,clk_out,pwm_out);

    end Behavioral;
    -- /////////////////////////////////////////// end of top module///////////////////////////////////
-//50MHz至64KHz///////////
图书馆IEEE;
使用IEEE.STD_LOGIC_1164.ALL;
使用ieee.numeric_std.all;
使用ieee.std_logic_arith.all;
使用ieee.std_logic_unsigned.all;
实体clk64kHz为——输入频率为50MHz,输出频率为64MHz
港口(
clk:标准逻辑中;
复位:在标准逻辑中;
时钟输出:输出标准逻辑
);
结束clk64kHz;
clk64kHz的架构是
信号时间:标准逻辑:='0';
信号计数器:标准逻辑向量(8到0):=“000000000”;
开始
分频器:过程(复位、时钟)开始
如果(重置='1'),则

时间模块内比较器:(数据输入)和(计数器输出)的大小不相等。在我的研究过程中,他们进行了比较。在体系结构中,最好在(begin)语句之后分配信号(counter_out)

模块内解码器:从不使用输入(clk_out)。你为什么要申报???把它拿走


模块内pwm_10ms:只需在端口列表中声明信号(计数器_out)和(数据_out),并从架构中删除相同的信号

你能更具体一点关于坏警告和错误吗?输入永远不会被使用。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。警告:Xst:647-从未使用输入。如果该端口属于顶级块或子块,则该端口将被保留并保持未连接状态