我解决了之前的错误,但系统不允许我创建一个新问题,这就是我编辑当前错误的原因。现在我在这样的地图上收到错误:
错误:MapLib:979 - LUT6符号" Mmux_ac97_sdata_out22" (输出 signal = Mmux_ac97_sdata_out21)具有输入信号" Madd_frame_count_lut< 1>" 将被修剪。有关详细信息,请参见地图报告文件的第5部分 为什么输入信号将变为未驱动。 错误:MapLib:979 - LUT6符号" Mmux_ac97_sdata_out22" (输出 signal = Mmux_ac97_sdata_out21)具有输入信号" Madd_frame_count_lut< 3>" 将被修剪。有关详细信息,请参见地图报告文件的第5部分 为什么输入信号将变为未驱动。 错误:MapLib:979 - LUT6符号" Mmux_ac97_sdata_out22" (输出 signal = Mmux_ac97_sdata_out21)具有输入信号" Madd_frame_count_lut< 2>" 将被修剪。有关详细信息,请参见地图报告文件的第5部分 为什么输入信号将变为未驱动。 错误:MapLib:979 - LUT6符号" Mmux_ac97_sdata_out23" (输出 signal = Mmux_ac97_sdata_out22)具有输入信号" Madd_frame_count_cy< 0>"哪一个 将被修剪。有关原因的详细信息,请参见地图报告文件的第5部分 输入信号将变为未驱动。 错误:MapLib:979 - LUT6符号" Mmux_ac97_sdata_out25" (输出 signal = Mmux_ac97_sdata_out24)具有输入信号" Madd_frame_count_lut< 1>" 将被修剪。有关详细信息,请参见地图报告文件的第5部分 为什么输入信号将变为未驱动。 错误:MapLib:979 - LUT6符号" Mmux_ac97_sdata_out25" (输出 signal = Mmux_ac97_sdata_out24)具有输入信号" Madd_frame_count_lut< 2>" 将被修剪。有关详细信息,请参见地图报告文件的第5部分 为什么输入信号将变为未驱动。 错误:MapLib:979 - LUT6符号" Mmux_ac97_sdata_out25" (输出 signal = Mmux_ac97_sdata_out24)具有输入信号" Madd_frame_count_lut< 3>" 将被修剪。有关详细信息,请参见地图报告文件的第5部分 为什么输入信号将变为未驱动。 错误:MapLib:979 - LUT6符号" Mmux_ac97_sdata_out25" (输出 signal = Mmux_ac97_sdata_out24)具有输入信号" Madd_frame_count_cy< 0>"哪一个 将被修剪。有关原因的详细信息,请参见地图报告文件的第5部分 输入信号将变为未驱动。 错误:MapLib:979 - LUT5符号" Mmux_ac97_sdata_out29_F" (输出信号= N8)有 输入信号" Mmux_ac97_sdata_out25"将被修剪。见第5节 有关输入信号变为何处的详细信息,请参见地图报告文件 无驱动。 错误:MapLib:979 - LUT4符号" Mmux_ac97_sdata_out29_G" (输出信号= N9)有 输入信号" Madd_frame_count_cy< 0>"将被修剪。见第5节 有关输入信号变为何处的详细信息,请参见地图报告文件 无驱动。 错误:MapLib:979 - LUT4符号" Mmux_ac97_sdata_out29_G" (输出信号= N9)有 输入信号" Mmux_ac97_sdata_out25"将被修剪。见第5节 有关输入信号变为何处的详细信息,请参见地图报告文件 无驱动。 错误:MapLib:978 - LUT6符号" Mmux_ac97_sdata_out22" (输出 signal = Mmux_ac97_sdata_out21)有一个使用输入引脚I0的公式 不再有连接信号。请确保使用的所有引脚 该LUT的等式具有未被修整的信号(参见第5节) 有关修剪信号的详细信息,请参见报告文件。 错误:MapLib:978 - LUT6符号" Mmux_ac97_sdata_out22" (输出 signal = Mmux_ac97_sdata_out21)有一个使用输入引脚I1的公式 不再有连接信号。请确保使用的所有引脚 该LUT的等式具有未被修整的信号(参见第5节) 有关修剪信号的详细信息,请参见报告文件。 错误:MapLib:978 - LUT6符号" Mmux_ac97_sdata_out22" (输出 signal = Mmux_ac97_sdata_out21)有一个使用输入引脚I2的公式 不再有连接信号。请确保使用的所有引脚 该LUT的等式具有未被修整的信号(参见第5节) 有关修剪信号的详细信息,请参见报告文件。 错误:MapLib:978 - LUT6符号" Mmux_ac97_sdata_out23" (输出 signal = Mmux_ac97_sdata_out22)有一个使用输入引脚I1的公式 不再有连接信号。请确保使用的所有引脚 该LUT的等式具有未被修整的信号(参见第5节) 有关修剪信号的详细信息,请参见报告文件。 错误:MapLib:978 - LUT6符号" Mmux_ac97_sdata_out25" (输出 signal = Mmux_ac97_sdata_out24)有一个使用输入引脚I1的公式 不再有连接信号。请确保使用的所有引脚 该LUT的等式具有未被修整的信号(参见第5节) 有关修剪信号的详细信息,请参见报告文件。 错误:MapLib:978 - LUT6符号" Mmux_ac97_sdata_out25" (输出 signal = Mmux_ac97_sdata_out24)有一个使用输入引脚I3的公式 不再有连接信号。请确保使用的所有引脚 该LUT的等式具有未被修整的信号(参见第5节) 有关修剪信号的详细信息,请参见报告文件。 错误:MapLib:978 - LUT6符号" Mmux_ac97_sdata_out25" (输出 signal = Mmux_ac97_sdata_out24)有一个使用输入引脚I4的公式 不再有连接信号。请确保使用的所有引脚 该LUT的等式具有未被修整的信号(参见第5节) 有关修剪信号的详细信息,请参见报告文件。 错误:MapLib:978 - LUT6符号" Mmux_ac97_sdata_out25" (输出 signal = Mmux_ac97_sdata_out24)有一个使用输入引脚I5的公式 不再有连接信号。请确保使用的所有引脚 该LUT的等式具有未被修整的信号(参见第5节) 有关修剪信号的详细信息,请参见报告文件。 错误:MapLib:978 - LUT5符号" Mmux_ac97_sdata_out29_F" (输出信号= N8)有 使用输入引脚I3的公式,它不再具有连接信号。 请确保此LUT的等式中使用的所有引脚都有 未修剪的信号(参见地图报告文件的第5部分) 修剪信号的详细信息)。 错误:MapLib:978 - LUT4符号" Mmux_ac97_sdata_out29_G" (输出信号= N9)有 使用输入引脚I0的公式,它不再具有连接信号。 请确保此LUT的等式中使用的所有引脚都有 未修剪的信号(参见地图报告文件的第5部分) 修剪信号的详细信息)。 错误:MapLib:978 - LUT4符号" Mmux_ac97_sdata_out29_G" (输出信号= N9)有 使用输入引脚I3的公式,它不再具有连接信号。 请确保此LUT的等式中使用的所有引脚都有 未修剪的信号(参见地图报告文件的第5部分) 修剪信号的详细信息。)
VHDL中的完整代码是:
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 14:35:54 02/28/2016
-- Design Name:
-- Module Name: audioloopbackVHDL - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity audioloopbackVHDL is
port (
clock :in std_logic;
ac97_sdata_out :out std_logic;
ac97_sdata_in :in std_logic;
ac97_sync :out std_logic;
audio_reset_b :out std_logic;
ac97_bit_clock :in std_logic);
end audioloopbackVHDL;
architecture Behavioral of audioloopbackVHDL is
--attribute S: string;
--attribute S of ac97_sdata_out: signal is "TRUE";
signal abc : std_logic_vector (7 downto 0);
signal def : integer;
signal ghi : std_logic_vector (7 downto 0);
signal jkl : integer;
signal command_address : std_logic_vector(19 downto 0);
signal command_data : std_logic_vector(19 downto 0);
signal bit_count : std_logic_vector(7 downto 0) := "00000000";
signal frame_count : std_logic_vector(3 downto 0) := "0000";
signal command : std_logic_vector(23 downto 0);
signal reset_count : std_logic_vector(7 downto 0) := "00000000";
signal count : std_logic_vector(18 downto 0);
signal enable : std_logic_vector(19 downto 0);
signal en1 : std_logic_vector(17 downto 0);
begin
process(clock)
begin
if(rising_edge(clock))then
if(reset_count <= "11111111")then
audio_reset_b <= '1';
else
reset_count <= std_logic_vector(unsigned(reset_count) + 1 );
end if;
end if;
end process;
process(bit_count, ac97_bit_clock, command_data, command_address, frame_count)
begin
-- Generate the sync signal
if (bit_count <= "11111111")then
ac97_sync <= '1';
end if;
if (bit_count <= "00001111")then
ac97_sync <= '0';
end if;
if ((bit_count >= "00000000") and (bit_count <= "00001111"))then
-- Slot 0: Tags
case bit_count is
when "00000000" => ac97_sdata_out <= '1';
when "00000001" => ac97_sdata_out <= '1';
when "00000010" => ac97_sdata_out <= '1';
when others => ac97_sdata_out <= '0';
end case;
elsif ((bit_count >= "00010000") and (bit_count <= "00100011"))then
-- Slot 1: Command address
abc <= std_logic_vector(35 - unsigned(bit_count));
def <= to_integer(unsigned(abc));
ac97_sdata_out <= command_address(def);
elsif ((bit_count >= "00100100") and (bit_count <= "00110111"))then
-- Slot 2: Command data
ghi <= std_logic_vector(55 - unsigned(bit_count));
jkl <= to_integer(unsigned(ghi));
ac97_sdata_out <= command_data(jkl);
else
ac97_sdata_out <= '0';
end if;
if (bit_count <= "11111111")then
frame_count <= std_logic_vector(unsigned(frame_count) + 1);
bit_count <= std_logic_vector(unsigned(bit_count) + 1);
end if;
end process;
process(frame_count, command, ac97_bit_clock, count, command_address, command_data, ac97_sdata_in)
begin
case frame_count is
when "0000" => command <= "000000100000000000000000"; -- Unmute line outputs
when "0001" => command <= "000001000000000000000000"; -- Unmute headphones
when "0010" => command <= "000100000000100000001000"; -- Unmute line inputs
when others => command <= "111111000000000000000000"; -- Read vendor ID
end case;
-- Separate the address and data portions of the command
-- and pad them to 20 bits
command_address(19 downto 12) <= command(23 downto 16);
command_address(11 downto 0) <= "000000000000";
command_data(19 downto 4) <= command(15 downto 0);
command_data(3 downto 0) <= "0000";
end process;
end architecture;
我还附上了我的ucf代码:
NET "clock" LOC="V10" | IOSTANDARD=LVCMOS33 | CLOCK_DEDICATED_ROUTE=FALSE;
#
# Audio CODEC
#
NET "audio_reset_b" LOC="K15" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
NET "ac97_sdata_out" LOC="H18" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
NET "ac97_sdata_in" LOC="J16" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
NET "ac97_sync" LOC="K16" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
NET "ac97_bit_clock" LOC="J18" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | CLOCK_DEDICATED_ROUTE=FALSE;
此外,当主程序在Verilog中时,此ucf按预期工作。请帮帮我
答案 0 :(得分:2)
至少在第二个过程中,if ... end if
没有平衡,因此缺少一些end if
。可能还有其他问题;正如Peabbels所问;什么是第119行?
尝试根据控件结构缩进代码,因为这很容易显示语法问题。使用Emacs VHDL美化显示如下代码:
process(bit_count, ac97_sync, ac97_bit_clock, ac97_sdata_out, command_data, command_address, frame_count)
begin
-- Generate the sync signal
if (bit_count <= "11111111")then
ac97_sync <= '1';
if (bit_count <= "00001111")then
ac97_sync <= '0';
if ((bit_count >= "00000000") and (bit_count <= "00001111"))then
-- Slot 0: Tags
case bit_count is
when "00000000" => ac97_sdata_out <= '1';
when "00000001" => ac97_sdata_out <= '1';
when "00000010" => ac97_sdata_out <= '1';
when others => ac97_sdata_out <= '0';
end case;
else
if ((bit_count >= "00010000") and (bit_count <= "00100011"))then
-- Slot 1: Command address
abc <= std_logic_vector(35 - unsigned(bit_count));
def <= to_integer(unsigned(abc));
ac97_sdata_out <= command_address(def);
else
if ((bit_count >= "00100100") and (bit_count <= "00110111"))then
-- Slot 2: Command data
ghi <= std_logic_vector(55 - unsigned(bit_count));
jkl <= to_integer(unsigned(ghi));
ac97_sdata_out <= command_data(jkl);
else
ac97_sdata_out <= '0';
end if;
if (bit_count <= "11111111")then
frame_count <= std_logic_vector(unsigned(frame_count) + 1);
bit_count <= std_logic_vector(unsigned(bit_count) + 1);
end if;
end process;