西北工业大学《硬件描述语言语与FPGA》实验报告学院:学号:姓名:专业:实验时间:实验地点:指导教师:西北工业大学20年月利用状态机实现比较复杂的接口设计一、实验目的及要求1.学习运用由状态机控制的逻辑开关,设计出一个比较复杂的接口逻辑;2.在复杂设计中使用任务(task)结构,以提高程序的可读性;3.加深对可综合风格模块的认识。二、实验设备(环境)及要求预装了开发工具synplify、ModelSimSE的PC机。三、实验内容与步骤内容:利用状态机实现一个比较复杂的接口设计。步骤:1.建立工程并编写模块源码;2.编写测试模块并思考状态机是如何实现复杂的接口设计的;3.布局布线并仿真;4.记录数据并完成实验报告。四、实验代码modulewriting(reset,clk,address,data,sda,ack);inputreset,clk;input[7:0]data,address;inoutsda;outputack;reglink_write;reg[3:0]state;reg[4:0]sh8out_state;reg[7:0]sh8out_buf;regfinish_F;regack;parameteridle=0,addr_write=1,data_write=2,stop_ack=3;parameterbit0=1,bit1=2,bit2=3,bit3=4,bit4=5,bit5=6,bit6=7,bit7=8;assignsda=link_write?sh8out_buf[7]:1'bz;always@(posedgeclk)beginif(!reset)beginlink_write=0;state=idle;finish_F=0;sh8out_state=idle;ack=0;sh8out_buf=0;endelsecase(state)idle:beginlink_write=0;finish_F=0;sh8out_state=idle;ack=0;sh8out_buf=address;state=addr_write;endaddr_write:beginif(finish_F==0)beginshift8_out;endelsebeginsh8out_state=idle;sh8out_buf=data;state=data_write;finish_F=0;endenddata_write:beginif(finish_F==0)beginshift8_out;endelsebeginlink_write=0;state=stop_ack;finish_F=0;ack=1;endendstop_ack:beginack=0;state=idle;endendcaseendtaskshift8_out;begincase(sh8out_state)idle:beginlink_write=1;sh8out_state=bit7;endbit7:beginlink_write=1;sh8out_state=bit6;sh8out_buf=sh8out_buf1;endbit6:beginsh8out_state=bit5;sh8out_buf=sh8out_buf1;endbit5:beginsh8out_state=bit4;sh8out_buf=sh8out_buf1;endbit4:beginsh8out_state=bit3;sh8out_buf=sh8out_buf1;endbit3:beginsh8out_state=bit2;sh8out_buf=sh8out_buf1;endbit2:beginsh8out_state=bit1;sh8out_buf=sh8out_buf1;endbit1:beginsh8out_state=bit0;sh8out_buf=sh8out_buf1;endbit0:beginlink_write=0;finish_F=1;endendcaseendendtaskendmodule//测试代码:`timescale1ns/100ps`defineclk_cycle50modulewritingTop;regreset,clk;reg[7:0]data,address;wireack,sda;always#`clk_cycleclk=~clk;initialbeginclk=0;reset=1;data=0;address=0;#(2*`clk_cycle)reset=0;#(2*`clk_cycle)reset=1;#(100*`clk_cycle)$stop;endalways@(posedgeack)begindata=data+1;address=address+1;endwritingwriting(.reset(reset),.clk(clk),.data(data),.address(address),.ack(ack),.sda(sda));endmodule五、仿真综合结果仿真图综合图RTL级网表门级网标六、教师评语签名:日期:成绩