专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
这个相位检测算法可以用verilog hdl描述吗?
2019-03-25 08:09
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
FPGA
8901
9
1792
这个相位检测算法可以用verilog hdl描述吗?里面涉及太多延时或计时,头都大了。
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
pengwenxue
2019-03-25 12:58
< / 哪位大侠帮帮我呀,这里附上用汇编做的程序,根据实际需要,我要把它用verilog hdl给描述出来。
;//==================================
PHASE_DETECT:
MOV PHASE_NUMBER,#10H ;//相位调节次数=10H
MOV A,U414_STATUS
JB ACC.5,PHASE_DETECT_10
MOV A,U414_STATUS
SETB ACC.5 ;//EHT INH=0(高压板上的绿灯灭)
MOV U414_STATUS,A
MOV DPTR,#0CFFFH ;//选通U413
MOVX @DPTR,A
MOV A,SOL_STATUS
SETB ACC.7 ;//GREEN RELAY 合上
MOV SOL_STATUS,A
MOV DPTR,#7FFFH
MOVX @DPTR,A
SETB FRT_PRT_RDY
MOV A,FAULT_UNIT
SETB ACC.4 ;//EHT_ON
MOV FAULT_UNIT,A
PHASE_DETECT_10:
MOV R2,#00H
MOV R3,#00H
MOV R4,#00H
DJNZ R4,$
MOV R4,#00H ;//22H
DJNZ R4,$
MOV R1,PHASE_NUMBER ;//相位调节次数
PHASE_DETECT_90:
MOV R4,#39H ;//R4=17H(39H)
JB PHASE_REQUEST,PHASE_DETECT_20 ;//有相位请求吗?
RET
PHASE_DETECT_20:
JB T1,$
JNB T1,$
CLR EA
CLR PHASE_CLAMP ;//P14=0,PHASE SWITCH OFF
DJNZ R4,$
SETB PHASE_CLAMP ;//P14=1,PHASE SWITCH ON
MOV R4,#1EH ;//R4=07H(14H)
DJNZ R4,$
CLR F0
MOV R4,#32H ;//R4=26H(40H)
PHASE_DETECT_40:
MOV DPTR,#0CFFFH ;//选通U413
MOVX A,@DPTR
JB ACC.1,PHASE_DETECT_30 ;//PHASE_ALIG="1"?OK,PHASE ALIGNED MUCH
DJNZ R4,PHASE_DETECT_40
SJMP PHASE_DETECT_50
PHASE_DETECT_30:
SETB F0
PHASE_DETECT_50:
MOV A,P1 ;//NO,PHASE ALIGNED LITTLE
ANL A,#0FCH
ORL A,#11H
MOV R6,A ;//保存调频系数--->R6
MOV R4,#12H
JB F0,PHASE_DETECT_60
MOV R4,#10H ;//F0=0,PHASE DIG LITTLE
INC R3
MOV A,PHASE_OFFSET
INC A
JZ PHASE_DETECT_70
MOV PHASE_OFFSET,A
SJMP PHASE_DETECT_70
PHASE_DETECT_60: ;//F0=1,PHASE DIG MUCH
INC R2
MOV A,PHASE_OFFSET
DEC A
JZ PHASE_DETECT_70
MOV PHASE_OFFSET,A
PHASE_DETECT_70:
MOV A,P1
ANL A,#0FCH
ORL A,R4
MOV R4,#02H ;//R4=01H(02H)
JB PHASE_REQUEST,PHASE_DETECT_80 ;//CHK IF PHASE_REQUEST=0
SETB EA
RET
PHASE_DETECT_80:
JB T1,$
JNB T1,$
MOV P1,A ;//P14=1,ON PHASE SWITCH
XCH A,R6
DJNZ R4,$
MOV P1,A ;//恢复调频系数--->P1
MOV R4,#25H ;//R4=0FH(25H)
DJNZ R4,$
DJNZ R1,PHASE_DETECT_90
CLR EA
MOV A,PHASE_NUMBER ;//PHASE ADJUST
CLR C
CPL A
INC A
ADD A,R2
MOV R2,#00H
JC PHASE_DETECT_A0
MOV A,PHASE_NUMBER ;//PHASE ADJUST
CPL A
INC A
ADD A,R3 ;//PHASE DIG LITTLE
MOV R3,#00H
JC PHASE_DETECT_B0
MOV DPTR,#0CFFFH ;//选通U413
MOVX A,@DPTR
CPL A
JB ACC.3,PHASE_DETECT_C0 ;//JET START
MOV A,SOL_STATUS
SETB ACC.7 ;//GREEN RELAY 合上
MOV SOL_STATUS,A
MOV DPTR,#7FFFH
MOVX @DPTR,A
SETB FRT_PRT_RDY
PHASE_DETECT_C0:
CALL FAULT_DISPLAY
SETB EA
RET
;//================================== ;//相位调节过大(相位调节过大时,绿灯不灭)
PHASE_DETECT_B0:
MOV A,U415_STATUS
JNB ACC.1,PHASE_DETECT_B1 ;//相位调制故障已存在吗?
SETB EA
RET
PHASE_DETECT_B1:
ORL A,#01H ;//充电故障灯亮,相位故障灯灭
;// ANL A,#0FBH
MOV U415_STATUS,A
MOV DPTR,#5FFFH ;//选通U414
MOVX @DPTR,A
MOV A,FAULT_UNIT
SETB ACC.1
CLR ACC.4
MOV FAULT_UNIT,A
MOV A,SOL_STATUS
SETB ACC.6 ;//黄灯亮
MOV SOL_STATUS,A
MOV DPTR,#7FFFH
MOVX @DPTR,A
MOV A,U414_STATUS
SETB ACC.2 ;//面板充电故障灯亮
MOV U414_STATUS,A
MOV DPTR,#0CFFFH ;//选通U413
MOVX @DPTR,A
SETB EA
RET
;//================================== ;//相位调节过小(相位调节过小时,绿灯不灭)
PHASE_DETECT_A0:
MOV A,U415_STATUS
JNB ACC.1,PHASE_DETECT_A1 ;//相位调制故障已存在吗?
SETB EA
RET
PHASE_DETECT_A1:
; ORL A,#04H ;//充电故障灯灭,相位故障灯亮
ANL A,#0FEH
MOV U415_STATUS,A
MOV DPTR,#5FFFH ;//选通U414
MOVX @DPTR,A
MOV A,FAULT_UNIT
SETB ACC.1
CLR ACC.4
MOV FAULT_UNIT,A
MOV A,SOL_STATUS
SETB ACC.6 ;//黄灯亮
MOV SOL_STATUS,A
MOV DPTR,#7FFFH
MOVX @DPTR,A
MOV A,U414_STATUS
SETB ACC.2 ;//面板充电故障灯亮
MOV U414_STATUS,A
MOV DPTR,#0CFFFH ;//选通U413
MOVX @DPTR,A
SETB EA
RET
加载中...
查看其它9个回答
一周热门
更多
>
相关问题
相关文章
基于FPGA的详细设计流程
0个评论
Xilinx的FPGA开发工具——ISE开发流程
0个评论
嵌入式领域,FPGA的串口通信接口设计,VHDL编程,altera平台
0个评论
干货分享,FPGA硬件系统的设计技巧
0个评论
你知道Verilog HDL程序是如何构成的吗
0个评论
一种通过FPGA对AD9558时钟管理芯片进行配置的方法
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
;//==================================
PHASE_DETECT:
MOV PHASE_NUMBER,#10H ;//相位调节次数=10H
MOV A,U414_STATUS
JB ACC.5,PHASE_DETECT_10
MOV A,U414_STATUS
SETB ACC.5 ;//EHT INH=0(高压板上的绿灯灭)
MOV U414_STATUS,A
MOV DPTR,#0CFFFH ;//选通U413
MOVX @DPTR,A
MOV A,SOL_STATUS
SETB ACC.7 ;//GREEN RELAY 合上
MOV SOL_STATUS,A
MOV DPTR,#7FFFH
MOVX @DPTR,A
SETB FRT_PRT_RDY
MOV A,FAULT_UNIT
SETB ACC.4 ;//EHT_ON
MOV FAULT_UNIT,A
PHASE_DETECT_10:
MOV R2,#00H
MOV R3,#00H
MOV R4,#00H
DJNZ R4,$
MOV R4,#00H ;//22H
DJNZ R4,$
MOV R1,PHASE_NUMBER ;//相位调节次数
PHASE_DETECT_90:
MOV R4,#39H ;//R4=17H(39H)
JB PHASE_REQUEST,PHASE_DETECT_20 ;//有相位请求吗?
RET
PHASE_DETECT_20:
JB T1,$
JNB T1,$
CLR EA
CLR PHASE_CLAMP ;//P14=0,PHASE SWITCH OFF
DJNZ R4,$
SETB PHASE_CLAMP ;//P14=1,PHASE SWITCH ON
MOV R4,#1EH ;//R4=07H(14H)
DJNZ R4,$
CLR F0
MOV R4,#32H ;//R4=26H(40H)
PHASE_DETECT_40:
MOV DPTR,#0CFFFH ;//选通U413
MOVX A,@DPTR
JB ACC.1,PHASE_DETECT_30 ;//PHASE_ALIG="1"?OK,PHASE ALIGNED MUCH
DJNZ R4,PHASE_DETECT_40
SJMP PHASE_DETECT_50
PHASE_DETECT_30:
SETB F0
PHASE_DETECT_50:
MOV A,P1 ;//NO,PHASE ALIGNED LITTLE
ANL A,#0FCH
ORL A,#11H
MOV R6,A ;//保存调频系数--->R6
MOV R4,#12H
JB F0,PHASE_DETECT_60
MOV R4,#10H ;//F0=0,PHASE DIG LITTLE
INC R3
MOV A,PHASE_OFFSET
INC A
JZ PHASE_DETECT_70
MOV PHASE_OFFSET,A
SJMP PHASE_DETECT_70
PHASE_DETECT_60: ;//F0=1,PHASE DIG MUCH
INC R2
MOV A,PHASE_OFFSET
DEC A
JZ PHASE_DETECT_70
MOV PHASE_OFFSET,A
PHASE_DETECT_70:
MOV A,P1
ANL A,#0FCH
ORL A,R4
MOV R4,#02H ;//R4=01H(02H)
JB PHASE_REQUEST,PHASE_DETECT_80 ;//CHK IF PHASE_REQUEST=0
SETB EA
RET
PHASE_DETECT_80:
JB T1,$
JNB T1,$
MOV P1,A ;//P14=1,ON PHASE SWITCH
XCH A,R6
DJNZ R4,$
MOV P1,A ;//恢复调频系数--->P1
MOV R4,#25H ;//R4=0FH(25H)
DJNZ R4,$
DJNZ R1,PHASE_DETECT_90
CLR EA
MOV A,PHASE_NUMBER ;//PHASE ADJUST
CLR C
CPL A
INC A
ADD A,R2
MOV R2,#00H
JC PHASE_DETECT_A0
MOV A,PHASE_NUMBER ;//PHASE ADJUST
CPL A
INC A
ADD A,R3 ;//PHASE DIG LITTLE
MOV R3,#00H
JC PHASE_DETECT_B0
MOV DPTR,#0CFFFH ;//选通U413
MOVX A,@DPTR
CPL A
JB ACC.3,PHASE_DETECT_C0 ;//JET START
MOV A,SOL_STATUS
SETB ACC.7 ;//GREEN RELAY 合上
MOV SOL_STATUS,A
MOV DPTR,#7FFFH
MOVX @DPTR,A
SETB FRT_PRT_RDY
PHASE_DETECT_C0:
CALL FAULT_DISPLAY
SETB EA
RET
;//================================== ;//相位调节过大(相位调节过大时,绿灯不灭)
PHASE_DETECT_B0:
MOV A,U415_STATUS
JNB ACC.1,PHASE_DETECT_B1 ;//相位调制故障已存在吗?
SETB EA
RET
PHASE_DETECT_B1:
ORL A,#01H ;//充电故障灯亮,相位故障灯灭
;// ANL A,#0FBH
MOV U415_STATUS,A
MOV DPTR,#5FFFH ;//选通U414
MOVX @DPTR,A
MOV A,FAULT_UNIT
SETB ACC.1
CLR ACC.4
MOV FAULT_UNIT,A
MOV A,SOL_STATUS
SETB ACC.6 ;//黄灯亮
MOV SOL_STATUS,A
MOV DPTR,#7FFFH
MOVX @DPTR,A
MOV A,U414_STATUS
SETB ACC.2 ;//面板充电故障灯亮
MOV U414_STATUS,A
MOV DPTR,#0CFFFH ;//选通U413
MOVX @DPTR,A
SETB EA
RET
;//================================== ;//相位调节过小(相位调节过小时,绿灯不灭)
PHASE_DETECT_A0:
MOV A,U415_STATUS
JNB ACC.1,PHASE_DETECT_A1 ;//相位调制故障已存在吗?
SETB EA
RET
PHASE_DETECT_A1:
; ORL A,#04H ;//充电故障灯灭,相位故障灯亮
ANL A,#0FEH
MOV U415_STATUS,A
MOV DPTR,#5FFFH ;//选通U414
MOVX @DPTR,A
MOV A,FAULT_UNIT
SETB ACC.1
CLR ACC.4
MOV FAULT_UNIT,A
MOV A,SOL_STATUS
SETB ACC.6 ;//黄灯亮
MOV SOL_STATUS,A
MOV DPTR,#7FFFH
MOVX @DPTR,A
MOV A,U414_STATUS
SETB ACC.2 ;//面板充电故障灯亮
MOV U414_STATUS,A
MOV DPTR,#0CFFFH ;//选通U413
MOVX @DPTR,A
SETB EA
RET
一周热门 更多>