向Spartan 3E套件提供8位输入

时间:2013-01-22 15:17:17

标签: fpga

我有一个Spartan 3E套件。在那个套件中有4个开关,有4个按钮。

对于我的论文,我需要16位输入,但我转换为8位。

现在我的问题是我有4个开关我只能输入4位,而其他4位没有使用按钮输出。

如果有任何人知道如何使用外部接口提供额外的4位,请提前谢谢, 使用Spartan 3E套件。

2 个答案:

答案 0 :(得分:2)

您有很多选择:

http://www.xilinx.com/support/documentation/boards_and_kits/ug230.pdf

显然你有你提到的内置按钮和开关,还有一个可以使用的旋转按钮。以下是一些其他未完全内置的选项,但您可以轻松使用(首先使用最困难的选项):

来自Hirose 100针FX2边缘连接器的<43> 43 I / O ,您可以将其他按钮/开关连接到这些I / O.然后编写VHDL来监视I / O,就像内置按钮/开关一样。

RS-232串口,将其插入PC上的串口并打开终端程序与之通话,看看会发生什么。再次需要另一个vhdl块才能使它工作,但这是一个开始:

http://forums.xilinx.com/t5/Xilinx-Boards-and-Kits/Rs232-port-on-Spartan-3-starter-board/td-p/19282

PS / 2键盘端口,您可以插入键盘,再次需要添加一些vhdl逻辑来实际读取键盘,如下所示:

http://www.youtube.com/watch?v=aZeutF6d0Z4

10/100以太网物理层接口,您可以通过以太网与它通信,看起来MAC可以作为EDK Platform Studio的Base System Builder的一部分使用,您可以在MicroBlaze softcore谈论以太网!

答案 1 :(得分:1)

如果您不需要能够快速调整输入,只需使用按钮将开关锁定到矢量的4位部分即可。例如(读入16位向量):

process(clk)
begin
    if(rising_edge(clk)) then
        case pushbuttons is
            when "0001" =>
                data(15 downto 12) <= switches;
            when "0010" =>
                data(11 downto 8) <= switches;
            when "0100" =>
                data(7 downto 4) <= switches;
            when "1000" =>
                data(3 downto 0) <= switches;
            when others =>
        end case;
    end if;
end process;

如果您只需要8位输入,只需切掉case-statement的上半部分。