我是初学者,但仍然不能相信我不能使这么简单的代码工作。 我有Digilent Nexys2 FPGA,编程xilinx ISE 我的目标是在两个不同的七段显示器上打印数字“2”和“1”(我想用我的眼睛看它“21”。A,B,C ,D,E,F,G,P是显示器(kathodes)的LED,AN0和AN1是显示器的阳极,0将它们打开)。在七段显示器上写数字的简单流程问题
我试图在那里投资的逻辑是,FPGA会很快重复这个'过程',以至于我的眼睛只能检测到光线。 我认为我应该把clk放在进程敏感列表中的原因是,每当时钟改变时,它都会进入进程并执行我的命令,对吗? 我在这里犯了什么逻辑错误? 我试图让如果其他语句如果rising_edge(clk)然后“1”将显示其他“2”,但它仍然导致一些错误..什么?我应该让这个过程时钟?
这里是警告我得到时,我想合成它
WARNING:Xst:647 - Input <clk> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
这里是我得到当我尝试生成一个编程位文件警告
WARNING:PhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal does not drive any load pins in the design.
WARNING:Par:288 - The signal clk_IBUF has no load. PAR will not attempt to route this signal.
WARNING:Par:283 - There are 1 loadless signals in this design. This design will cause Bitgen to issue DRC warnings.
WARNING:PhysDesignRules:367 - The signal <clk_IBUF> is incomplete. The signal does not drive any load pins in the design.
和
这里是UCF文件:
NET "clk" LOC = B8;
NET "A" LOC = L18;
NET "B" LOC = F18;
NET "C" LOC = D17;
NET "D" LOC = D16;
NET "E" LOC = G14;
NET "F" LOC = J17;
NET "G" LOC = H14;
NET "P" LOC = C17;
NET "AN0" LOC = F17;
NET "AN1" LOC = H17;
NET "AN2" LOC = C18;
NET "AN3" LOC = F15;
和来这里的代码本身:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity disp is
Port (
clk : in STD_LOGIC;
A : out STD_LOGIC;
B : out STD_LOGIC;
C : out STD_LOGIC;
D : out STD_LOGIC;
E : out STD_LOGIC;
F : out STD_LOGIC;
G : out STD_LOGIC;
P : out STD_LOGIC;
AN0 : out STD_LOGIC;
AN1 : out STD_LOGIC;
AN2 : out STD_LOGIC;
AN3 : out STD_LOGIC
);
end disp;
-- main idea: writing "21" on seven segment display.
architecture BEHAV of disp is
begin
process (clk)
begin
--writing '1' (AN0 is on)
AN0 <='0';
AN1 <='1';
AN2 <='1';
AN3 <='1';
A <='1';
B <='0';
C <='0';
D <='1';
E <='1';
F <='1';
G <='1';
P <='1';
--writing '2' (AN1 is on)
AN0 <='1';
AN1 <='0';
AN2 <='1';
AN3 <='1';
A <='0';
B <='0';
C <='1';
D <='0';
E <='0';
F <='1';
G <='0';
P <='1';
end process;
end BEHAV;
你说得对,'1'和'2'互相干涉/放在一起。像这两个数字的所有LED同时亮起。 这是为什么? ,因为直到分配完成后,FPGA再次进入该过程?所以它没有完成?或什么地狱:D 我应该给这种延迟(在分配后(与使用计数器也许)或类似的东西“不要继续,直到我完成这个分配”命令?)?怎么样? @Morten Zilmer – TsotneP 2014-09-27 22:48:53