lcytms
发表于 2017-2-7 16:10:42
本帖最后由 lcytms 于 2017-2-7 16:19 编辑
13. 设定X_IDLE状态输出情况。
lcytms
发表于 2017-2-7 16:15:13
本帖最后由 lcytms 于 2017-2-7 16:17 编辑
14. 设定X_START状态输出情况。
lcytms
发表于 2017-2-7 16:20:29
本帖最后由 lcytms 于 2017-2-7 16:22 编辑
15. 设定X_SHIFT状态输出情况。
lcytms
发表于 2017-2-7 16:23:31
本帖最后由 lcytms 于 2017-2-7 16:25 编辑
16. 设定X_STOP状态输出情况。
lcytms
发表于 2017-2-7 16:26:17
17. 保存。
lcytms
发表于 2017-2-7 16:27:15
18. 产生HDL文件。
lcytms
发表于 2017-2-7 16:28:27
19. 修正spi_three_wire.v文件。
lcytms
发表于 2017-2-7 16:30:19
本帖最后由 lcytms 于 2017-2-7 16:48 编辑
20. 保存并编译。
lcytms
发表于 2017-2-7 16:40:58
本帖最后由 lcytms 于 2017-2-7 16:46 编辑
编写Testbench。
新建spi_three_wire_test.v文件。
`timescale 1ns/1ns
module spi_three_wire_test;
reg reset;
reg CLK;
reg GO;
reg bitcount;
wire SCLK;
wire bitcountEN;
wire rstbitcount;
wire LDEN;
wire SHEN;
wire SCEN;
wire ORDY;
wire SPC;
spi_three_wire dut (
reset,CLK,GO,bitcount,SCLK,bitcountEN,rstbitcount,LDEN,SHEN,SCEN,ORDY,SPC);
initial
begin
CLK = 0;
reset = 1;
GO = 0;
bitcount = 0;
#100
reset = 0;
GO = 1;
#100
GO = 0;
#150
bitcount = 1;
#100
bitcount = 2;
#100
bitcount = 3;
#100
bitcount = 4;
#100
bitcount = 5;
#100
bitcount = 6;
#100
bitcount = 7;
#100
bitcount = 8;
#100
bitcount = 9;
#100
bitcount = 10;
#100
bitcount = 11;
#100
bitcount = 12;
#100
bitcount = 13;
#100
bitcount = 14;
#100
bitcount = 15;
#1000 $stop;
end
always #50 CLK = ~CLK;
endmodule
lcytms
发表于 2017-2-7 16:44:32
本帖最后由 lcytms 于 2017-2-7 16:46 编辑
进行分析综合检查。
进行仿真设置。
查看仿真结果。
当SCEN为0时,SPC的时钟有16个上升沿。
当传输结束时,SCEN为1,且ORDY为1。
仿真功能正确。