这里有几个问题,请耐心等待,感谢您抽出宝贵时间阅读本文...
我最近编写了一个 SPI 主机,并对其进行了全面模拟以确保它按预期工作。从这里我想在另一个设计中使用它,我已经设置了一个 7 段显示组件来获取从 SPI 总线上的 ADC 接收到的值,但是我想我已经把自己搞糊涂了观点。
我需要向 SPI 主机发送一个带有其他参数的脉冲来启动传输,并等待一个忙信号被取消断言,然后我才能发送其他任何东西。我不确定在新设计中实现 SPI 主控的最佳方式。
我会在设计中将其用作组件吗?有没有更好的办法?
如果它必须是一个组件,有什么方法可以将它设置为直接从该组件输出到引脚,而不是我必须映射到顶层设计中的新输入/输出?
比如我有SCLK、MOSI、MISO、CS;我可以不只是让它们直接输出而不必通过顶层映射吗?似乎它会简化顶层并使其不那么笨重。
另外,是否可以设置一个函数来只说“通过 SPI 发送此数据,然后返回收到的内容”?
我仍在思考如何将这些东西放在一起,因此非常感谢帮助/示例。似乎所有可用的示例/教程都基于使用两个半加器、逻辑门等,只有在它们如此简单时才有帮助。
编辑:我的 SPI Master 的实体
entity SPI_master is
generic(data_width: integer := 8;
clock_select: integer := 0);
port(SCLK: out std_logic;
MOSI: out std_logic;
MISO: in std_logic;
CS: out std_logic;
Mclk_in: in std_logic;
RST: in std_logic;
CPOL: in std_logic;
CPHA: in integer;
send_packet: in std_logic;
busy: out std_logic;
Tx_data: in std_logic_vector(data_width-1 downto 0);
Rx_data: out std_logic_vector(data_width-1 downto 0));
end SPI_master;