欢迎来到天天文库
浏览记录
ID:44753103
大小:128.64 KB
页数:6页
时间:2019-10-28
《biss串口程序源码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、源程序modulebiss_mode(I_sys_clk,I_reset_n,I_biss_slo,O_biss_ma,O_angle_data);inputwireI_sys_clk,I_reset_n;//100M系统时钟inputwireI_biss_slo;outputwireO_biss_ma;outputreg[25:0]O_angle_data;parameterP_STATE_IDLE=5'b00001;parameterP_STATE_WAIT=5'b00010;parameterP_STATE_ACK=5'b00100;parameterP_STAT
2、E_WORK=5'b01000;parameterP_STATE_TIMEOUT=5'b10000;regR_biss_slo;reg[4:0]R_work_state;reg[3:0]R_clk_cnt;reg[4:0]R_cnt_biss_cycle;regR_biss_ma_ena;regR_10mhz_clk;regR_cnt_en;//----------------------------------10分频-------------------------------------always@(posedgeI_sys_clkornegedgeI_rese
3、t_n)beginif(~I_reset_n)beginR_clk_cnt<=4'd0;R_10mhz_clk<=1'b0;endelsebeginif(R_clk_cnt==4'd4)beginR_clk_cnt<=4'd0;R_10mhz_clk<=~R_10mhz_clk;endelsebeginR_clk_cnt<=R_clk_cnt+4'd1;endendend//------------------------------------------------------------------------------------//-------------
4、--------------------同步时钟域------------------------------always@(negedgeR_10mhz_clkornegedgeI_reset_n)beginif(~I_reset_n)beginR_biss_slo<=1'b1;endelsebeginR_biss_slo<=I_biss_slo;endend//--------------------------------状态机定义---------------------------------------always@(posedgeR_10mhz_clkor
5、negedgeI_reset_n)beginif(~I_reset_n)beginR_work_state<=P_STATE_IDLE;R_cnt_en<=1'b0;R_biss_ma_ena<=1'b1;endelsebegincase(R_work_state)P_STATE_IDLE://闲置状态beginif(R_biss_slo)beginR_work_state<=P_STATE_WAIT;R_biss_ma_ena<=1'b0;endelsebeginR_work_state<=P_STATE_IDLE;R_biss_ma_ena<=1'b1;endend
6、P_STATE_WAIT://等待第二个上升沿出现SL低电平响应beginif(R_biss_slo)beginR_work_state<=P_STATE_WAIT;endelsebeginR_work_state<=P_STATE_ACK;endendP_STATE_ACK://ACK(确认接收数据状态)周期beginif(~R_biss_slo)//收到高电平进入工作状态beginR_work_state<=P_STATE_ACK;R_cnt_en<=1'b0;endelsebeginR_work_state<=P_STATE_WORK;R_cnt_en<=1'b1
7、;endendP_STATE_WORK:begin//工作状态if(R_cnt_biss_cycle==5'd25)beginR_work_state<=P_STATE_TIMEOUT;R_cnt_en<=1'b0;R_biss_ma_ena<=1'b1;endelsebeginR_work_state<=P_STATE_WORK;R_cnt_en<=1'b1;endendP_STATE_TIMEOUT:beginif(R_biss_slo)beginR_work_state<=P_STATE_IDLE;endelsebeginR_wor
此文档下载收益归作者所有