我有一个Spartan 3E套件。在那个套件中有4个开关,有4个按钮。
对于我的论文,我需要16位输入,但我转换为8位。
现在我的问题是我有4个开关我只能输入4位,而其他4位没有使用按钮输出。
如果有任何人知道如何使用外部接口提供额外的4位,请提前谢谢, 使用Spartan 3E套件。
答案 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的上半部分。