【发布时间】:2014-11-21 00:24:01
【问题描述】:
我收到类似警告
WARNING:Xst:647 - 从不使用输入。如果该端口属于顶级块或属于子块并且该子块的层次结构被保留,则该端口将被保留并保持未连接状态。 警告:Xst:647 - 从不使用输入。如果该端口属于顶级块或属于子块并且该子块的层次结构被保留,则该端口将被保留并保持未连接状态。 警告:Xst:647 - 从不使用输入。如果该端口属于顶级块或属于子块并且该子块的层次结构被保留,则该端口将被保留并保持未连接状态。 警告:Xst:647 - 从不使用输入。如果该端口属于顶级块或属于子块并且该子块的层次结构被保留,则该端口将被保留并保持未连接状态。 警告:Xst:647 - 从不使用输入。如果该端口属于顶级块或属于子块并且该子块的层次结构被保留,则该端口将被保留并保持未连接状态。 警告:Xst:1290 - 分层块在块中未连接。 它将从设计中删除。 警告:Xst:1290 - 分层块在块中未连接。 它将从设计中删除。 警告:Xst:1290 - 分层块在块中未连接。 它将从设计中删除。 警告:Xst:524 - 块实例的所有输出在块中未连接。 此实例将与所有底层逻辑一起从设计中删除 警告:Xst:2677 - 顺序类型的节点在块中未连接。 WARNING:Xst:1710 - FF/Latch(没有初始值)在 block 中有一个常数值 0。此 FF/Latch 将在优化过程中被修整。 WARNING:Xst:1895 - 由于其他 FF/Latch 修整,FF/Latch(无初始值)在 block 中具有恒定值 0。此 FF/Latch 将在优化过程中被修整。 WARNING:Xst:1895 - 由于其他 FF/Latch 修整,FF/Latch(无初始值)在 block 中具有恒定值 0。此 FF/Latch 将在优化过程中被修整。 WARNING:Xst:1895 - 由于其他 FF/Latch 修整,FF/Latch(无初始值)在 block 中具有恒定值 0。此 FF/Latch 将在优化过程中被修整。 WARNING:Xst:1895 - 由于其他 FF/Latch 修整,FF/Latch(无初始值)在 block 中具有恒定值 0。此 FF/Latch 将在优化过程中被修整。 WARNING:Xst:1895 - 由于其他 FF/Latch 修整,FF/Latch(无初始值)在 block 中具有恒定值 0。此 FF/Latch 将在优化过程中被修剪。
-- ///////// 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///////////////////////////////////
你好请帮助我获得正确的输出。我需要一个可变占空比,使用 rferesh 周期为 10 ms 的解码器,使用从 50Mhz 到 64KHz 的频率转换器。我收到了错误的警告和错误
【问题讨论】:
-
您能否更具体地了解一下错误警告和错误?
-
输入
从未使用过。如果该端口属于顶级块或属于子块并且该子块的层次结构被保留,则该端口将被保留并保持未连接状态。警告:Xst:647 - 输入 从未使用过。如果该端口属于顶级块或属于子块并且该子块的层次结构被保留,则该端口将被保留并保持未连接状态。警告:Xst:647 - 输入 从未使用过。如果该端口属于顶级块或属于子块,则该端口将被保留并保持未连接状态
标签: vhdl