Vhdl 50兆赫至64千赫频率
我收到了类似这样的警告 警告: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/闩锁将在优化过程中进行修剪Vhdl 50兆赫至64千赫频率,vhdl,Vhdl,我收到了类似这样的警告 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,则此端口将被保留并保持未连接状态。 警告:Xst:647-从未使用输入。如果此端口属于顶级块或子块,并且此子块的层次结构被保留,
-- ///////// 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-从未使用输入。如果该端口属于顶级块或子块,则该端口将被保留并保持未连接状态