0

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

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

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

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

4

2 回答 2

2

您有很多选择:

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

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

来自 Hirose 100 针 FX2 边缘连接器的 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 的基本系统构建器的一部分使用,您可以在 MicroBlaze 软核上编写代码来与以太网通信!

于 2013-01-22T21:55:20.127 回答
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 语句的上半部分。

于 2013-01-23T13:52:17.697 回答