软件:Quartus
语言:VHDL
代码功能:
SPI接口设计
SPI接口定义:要求地址位8bit,数据位16bit,再加上读写标识为1bit,一共25bit。
Bit顺序为:读写标识1bit+地址位8bi+数据位16bit。
本资源支持VHDL和Verilog两种语言。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 管脚分配
对应开发板位置:
4. 程序编译
5. RTL图
6. Testbench
7. 仿真图
SPI接口定义:要求地址位8bit,数据位16bit,再加上读写标识为1bit,一共25bit。Bit顺序为:读写标识1bit+地址位8bi+数据位16bit。
写数据仿真图
读数据仿真
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY SPI_top IS PORT ( sys_rst_p : IN STD_LOGIC;--复位 sys_clk : IN STD_LOGIC;--14.7456 SPI_CLK : OUT STD_LOGIC;--100K SPI_DI : OUT STD_LOGIC;--MOSI SPI_ENB : OUT STD_LOGIC;--CS低电平有效 SPI_DO : IN STD_LOGIC--MISO ); END SPI_top; ARCHITECTURE behave OF SPI_top IS COMPONENT spi_interface IS PORT ( sys_rst_p : IN STD_LOGIC; sys_clk : IN STD_LOGIC; SPI_CLK : OUT STD_LOGIC; SPI_DI : OUT STD_LOGIC; SPI_ENB : OUT STD_LOGIC; SPI_DO : IN STD_LOGIC; WR_RD_in : IN STD_LOGIC_VECTOR(1 DOWNTO 0); int_wr_data_in : IN STD_LOGIC_VECTOR(15 DOWNTO 0); int_add_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); int_rd_data_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ); END COMPONENT; SIGNAL WR_RD_in : STD_LOGIC_VECTOR(1 DOWNTO 0);--读写寄存器--10=写,01=读 SIGNAL int_wr_data_in : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL int_add_in : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL int_rd_data_out : STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN WR_RD_in <= "01";--10=写,01=读 int_wr_data_in <= "0001001000110100";--数据 int_add_in <= "01010110";--地址 --调用SPI接口模块 i_spi_interface : spi_interface PORT MAP ( sys_rst_p => sys_rst_p, sys_clk => sys_clk, SPI_CLK => SPI_CLK, SPI_DI => SPI_DI, SPI_ENB => SPI_ENB, SPI_DO => SPI_DO, WR_RD_in => WR_RD_in, int_wr_data_in => int_wr_data_in, int_add_in => int_add_in, int_rd_data_out => int_rd_data_out ); END behave;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=609
阅读全文
381