找回密码
 注册
关于网站域名变更的通知
查看: 372|回复: 1
打印 上一主题 下一主题

本人菜鸟,请教大神我写的程序复位有时出错怎么办啊

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-24 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
请教大神,8 M9 A# k; a- D2 j" W+ ^
我使用的是黑金AX309开发板,写的一个程序,烧程序在板子里跑的时候,按下复位有时程序直接跳过预热部分进入运行,有时就直接停在预热这里,有时就正常运行。我在Modelsim里面仿真的没有问题,在仿真里,复位后都是正常执行的,求助大神,非常感谢!/ S1 k/ t* G7 r# t& s3 v* I& T9 l
`timescale 1ns / 1ps
& d& f, V1 `# v/ \/ ^2 p# p//////////////////////////////////////////////////////////////////////////////////6 p/ ^! |  O" G+ {& v; s1 @  ]( b
// Company: % m" o( c* R+ ^8 x2 S
// Engineer:
8 j" A5 [8 q: F//
% i/ X% Z$ I) f/ ~2 r( q3 W4 \// Create Date:    13:38:11
; U7 z  j4 ?" v; a# Z// Design Name: ' b1 n! q  V; W: r
// Module Name:    auto_lock $ n; b- L, g6 q' S3 d8 F' v
// Project Name:
  g4 B( A6 i% m// Target Devices: + K, C- P8 \' @* J2 s5 D
// Tool versions:   @9 L, m0 x; i) w
// Description: % ]+ E" P' P  [1 H2 ]
//) b& M& c/ C, @# S. j& {
// Dependencies:
4 k. I, ?# U9 v* p1 ^! R7 ]//
: I7 S. N  P) _0 v8 @- \* V// Revision:
2 ]- e8 E5 _2 e7 u* @6 Z// Revision 0.01 - File Created% C+ Y; {- E1 p, y
// Additional Comments: " r# v8 p2 ^) a1 m7 F7 G0 ^
//
% `/ B) w7 \; L6 |0 R$ v//////////////////////////////////////////////////////////////////////////////////. X6 I( H% {, S$ y( l( J7 @
module auto_lock() k7 w. r7 }) T/ t. L. P

- d0 D' \7 G  t' y                        input clk,                                //系统时钟* g) v" S2 j8 }' v0 a+ @
                        input rst_n,                        //系统复位
; N. L/ D5 x' s5 T4 M                        input lock_signal,        //失锁锁定输入
& ?4 X0 \2 B+ k$ t. n                                                ! V. y' {& \" X
                        output reg analog_switch_1,        //模拟开关1输出$ T6 [: f2 b, G% g. L/ \: ~  Q
                        output reg analog_switch_2,        //模拟开关2输出) p2 @' r2 K5 `2 a" g# l/ x! l
                        output reg [13:0] dac_ch1,                //温度dac- w! F; X( [- I, H# H
                        
- Q& T) G/ m- E3 \2 t//                        input sawtooth_frequence,                //锯齿波频率4 V; J$ R# q. u2 h
                        output reg sawtooth_control,        //锯齿波控制
. _- z0 S" ]0 {% g4 g3 _        
: d2 L5 A  I8 F! T7 p                        input signed [15:0]adc_ch1_data,        //adc ch1电压值; S6 O7 t2 z# _2 h- o9 z
2 N. n& y: u0 ~  y4 @- E# x& f
                        //按键输入
  X3 R% ~  }. a1 P$ Y, q# L0 ^                        input key1_in,
' A) p" W9 }: m2 ^+ q9 ^& y                        input key2_in,/ }( l+ R  l+ q3 M" S2 F" b3 L
                        input key3_in,  Q+ T1 K9 d5 c2 x4 X  u' P9 h- o
                        input key4_in,* ?: r9 e5 S# k9 R5 G. m
% l- u/ P0 m% [0 u1 k
                        //系统状态指示# u5 \& c, \! ~7 t; S4 Q& h
                        output lock_status_led,        //led
) k( [4 s/ }* G! O3 x$ `1 p                        
* A9 k; C) e4 w3 E                        //DEBUG数据: d& E' z$ Z6 p6 O% l
                        output [23:0]debug_state_value,
- j7 ~8 ~# c) e+ e                        output [23:0]debug_pdh_ok_count_value
& [  B9 X2 a! h8 u    );' [" [0 j9 _7 o; Q$ e) `# s) `' L
         
9 k7 ]4 V4 J0 R9 i; Q  Y        parameter ON = 1'b1,OFF = 1'b0;
0 g4 _* Y. ]6 ^! D! H        parameter LOCK = 1'b1,UNLOCK = 1'b0;2 _2 x4 z3 J9 u" p
        parameter START = 1'b1,END = 1'b0;
  f2 N1 L' |' l4 }+ z) R         
% U* G$ e& f7 k" R//        parameter T100MS = 32'd49_999_99; : s/ @2 R+ z; ?! ~- t/ o
//        parameter T1S = 32'd49_999_999;
# G& D* |% T" R' z/ C0 g7 b3 o& g$ p: a% [$ e+ P
        parameter T100MS = 32'd49; 9 n/ J$ A# f* u7 n
        parameter T1S = 32'd49_9;
7 ~2 v+ b9 F% d  o) V) r  k3 o5 f        parameter T2S = 8'd2;
, a/ |" Q" I7 v: l( z3 u8 Q6 B% k        parameter T5S = 8'd5;        
/ z9 k8 f# R& G/ `- u& k        parameter T10S = 8'd10;# v' I/ c) h5 J
        parameter T20S = 8'd20;        
  `- y% P' u1 \' \$ a1 V2 S        
1 E' f2 K5 C- }# |3 l1 s        //temperture search zero point
: W2 n, Y8 f) V# Z        //parameter EXPERIENCE = 14'd8540;        //经验值
4 C3 ^4 W5 d! `) d: @8 {% Y$ a+ e        
) e1 m) l# y8 _& j1 c        assign debug_state_value = auto_lock_state;
! |* w( ?: `) G0 q! a/ g" B: T! E        assign debug_pdh_ok_count_value = pdh_ok_count;
. {7 ?4 e( ?) H4 N. C: p" u1 X9 ]0 v3 t. R: t3 N. u2 ?
        /**********************按键模块*************************/# q" ], Q' w% R# f) x
        keys keys_model(
: Q6 I9 i% Z  H$ K        ( ~% p* Y% H) j  J  U
                        .clk        (clk),                                //系统时钟! D1 ^) K# [* I' V' S# V
                        .rst_n        (rst_n),                        //系统复位; u- j+ g4 v5 M' A  e- ~# G) S

/ q6 a9 J: R+ |# l- ]                        //按键输入% i9 q! b/ v! t. n6 D
                        .key1_in  (key1_in),
! |; A) p8 z& V: K- W% Y                        .key2_in  (key2_in),2 z9 x  X, a* [. _+ w- K
                        .key3_in  (key3_in),
* i8 P# }" L5 t1 w- s3 A                        .key4_in  (key4_in),1 ^; M. w' \+ `
                        
, G1 P: L0 w5 M% f9 A                        //按键输出4 i0 [* V  p1 I- i! g5 d1 h9 t
                        .key1_scan  (key1_scan),
. b8 R2 D7 Q; u$ z" Q) F                        .key2_scan  (key2_scan),
& ~& c, ~% v& L8 V; Z4 H. ~8 I$ r) K& M. r                        .key3_scan  (key3_scan),* j: }+ y8 u) @( y
                        .key4_scan  (key4_scan)               
1 |1 S5 a* e: n# V5 d2 j+ w         );
4 O. c' K7 X( l, W) f8 U0 K; [( a/ a1 \7 M
& R2 b6 U% Y' H
        /***********************锁定信号触发边沿检测*************************/
% s! S$ x# ~& O7 B* l7 R+ r        lock_signal_edge_check lock_signal_edge_check_model(7 o" j, O$ }2 r4 d
( h* J( S* n' Y" S* A+ O
                        .clk        (clk),                                //系统时钟1 x9 K* w4 z& O& R/ V/ Y4 c
                        .rst_n        (rst_n),                        //系统复位
0 J) Z- D& {' Q) e( _                0 s; X  v4 @& O# Y. U. h4 B
                        .lock_signal(lock_signal),/ _6 E! J# ~+ d6 b& a
                        .locked        (locked),( Y& l7 @1 G, Z5 B1 r" G- K; c
                        .pdh_ok        (pdh_ok),
' j. v- A8 v5 ]8 a8 z$ V                        .lock_status_led        (lock_status_led)
7 U. F/ O7 {/ K1 l    );
8 j, q5 ~+ |, H' K( p7 I3 j        
- u! y. s$ [$ l; N$ X; z+ ?        /***********************系统运行*************************/
4 q6 X$ Y% r( ?- P2 |        reg[7:0] pdh_ok_count;4 P. R# A$ r2 i
        parameter pdh_ok_count_N_INIT = 8'd3;  F  b+ |% ^5 L, L3 Q. S, Y6 f
        reg[7:0] pdh_ok_count_N;- I, [) \) r, Z- N( a/ [5 A
        reg[31:0] pdh_time_count;& l7 v1 r0 I. t
        parameter pdh_time_INIT = 32'd999_999;/ H& L, W# P6 A& O. A3 x4 \3 P
        reg[31:0] pdh_time;        //在锯齿波为1Hz延时为20ms 频率越高锁定时间越短0 F( ]; ^% F7 w
        reg pdh_ok_delay_flag;        //pdh延时标志* E6 A+ ~! o. L7 }  k
        
. f3 C3 I- X0 S1 P. x        reg [7:0]locked_fail_count;        //锁定失败计数2 h5 z; T4 r' X: ?& L2 t) X
        
# D$ V3 g2 ^& n9 @# I        reg [13:0]dac_to_temperature_i;, ?5 z! o+ W+ `9 C7 J' N/ c1 G
        reg [13:0]dac_to_temperature_spare;//备份值
2 ^3 q5 v7 M& O/ v0 B; n        . p( m$ K- B1 j
        
1 t/ S1 `% c3 A' V/ `0 \5 m        parameter init_N = 14'd8;        // N 的初始范围
: h( \$ B. q2 [' h* T        reg [13:0]N;
; j$ S, ?; e8 `+ b. j* b6 S, z        parameter init_K = 14'd2;        //K 的初始值
, M0 b$ c* X7 ?& N6 ^; F+ F        reg [13:0]K;
7 c% }. F. D% F        8 l/ w. G  P: a1 K- v
        parameter init_DIR = 4'd1;        //扫描方向初始为正7 G- G  _3 \  X; v- J
        reg [3:0]DIR;        //扫描方向! a" {+ l4 ]" H8 y
        
# c# t6 x5 l" j$ l& v  ~' U        8 [# z5 {9 O( o: E
        ' d$ W, G6 l2 y0 s, r0 g0 p
        reg [31:0]time_count;% P  M7 o% k. l& R3 [5 ^8 I7 o
        reg [7:0]time_ones;        % B! l6 G! p0 h
        
! v& {3 `! I$ h) Z' g        reg [7:0]auto_lock_state;
! H5 y3 T& N7 V" C: B        reg [7:0]system_run_task_state;
6 |" Y7 k% p( k# p        ) L" k! K; ]0 ~3 P1 F
        reg key1buf,key2buf,key3buf,key4buf;
9 T; a2 g3 h9 ^9 W7 r+ k# E0 p; c. M% Z5 K
        3 E2 K4 r; y: ?; A6 [7 j: B
        always@(posedge clk)6 c5 p. D  c- |/ ~
        begin8 r' t; C; _- K
                ( |$ x' I9 U$ d+ u
                if(!rst_n)        //低电平复位
# m( M/ V) h0 M( j; }                        begin) F$ B7 H( P) O8 @+ x) t9 \: D+ i
                                auto_lock_state<= 8'd0;7 a! ~# U2 K/ X. R! S" Q, f+ [
                                
1 l6 D/ C* Q: x                        end
9 F! y! x! K# p$ L                else * c9 \3 j4 F  g1 x- p
                        begin
/ E% j( I4 {' W* D) `                          m+ a0 G" [  R8 `5 ~  }2 s5 \. z
                                  case (auto_lock_state)        
8 q) \7 d2 H" P0 L$ u/ x2 v                                                        . W$ `: M! m# R
                                                8'd0:                        //初始化
+ O' {, G( @% o2 ?& T* s8 F                                                        begin                7 y0 T) B' ]5 C/ V/ P
        " Y- J( I4 F* o& N- T' Z2 ?
                                                                dac_to_temperature_spare <= 14'd8192;        //0V7 Y' v( d! M6 _1 L% k) N" y( W
                                                                dac_to_temperature_i <= 14'd8192;        //0V
/ p/ J6 d! d1 t& k                                                                dac_ch1 <= dac_to_temperature_i;
/ D: Z9 f7 p( _! e' z                                                                4 {( G$ P( u+ k% [; Z
                                                                analog_switch_1 <= OFF;% I. J) g5 x" x6 Z' b0 B& w
                                                                analog_switch_2 <= OFF;
, j: @6 G& z: ^! ^8 U' a# X$ x                                                                sawtooth_control <= OFF;
! E+ G3 F* Q  ?. X, u                                                               
% g) l1 S2 U  J5 i( s0 X- B                                                                time_count <= 0;
% {, G% \/ m$ S( s                                                                time_ones <= 0;# K! ]! r; A' O2 R4 I
                                                               
+ U/ |2 o8 ^1 y6 c% P                                                                key1buf <= 2'd0;        
0 I) }0 p: O* t5 O8 ?1 _                                                                key2buf <= 2'd0;
. f3 A; H2 Y+ `; h                                                                ; `) S: B' W+ m& J7 _% J
                                                                auto_lock_state <= 8'd1;
% P5 b. w; ^5 C0 `9 I                                                        end
$ I# A" b+ K1 \! d! W  J                                  ; D) C0 v% i/ Y+ Q- Y9 S
                                                8'd1:                        //运行
# \6 n) @: n" U7 z0 U5 V7 {* {                                                        begin3 J0 R' U9 h% I/ f+ U
                                                               
# ]/ j  _/ F, x6 A8 [                                                                dac_ch1 <= dac_to_temperature_i;        7 S. E( }. S! q9 F6 I4 Q" w; D: B& M
               
' R' _9 ]" }/ K" v. @- M                                                                //系统预热20s9 i8 S' Q" K6 Z0 ?+ R
                                                                if(time_count == T1S)        //1s: u5 }- U/ s3 P1 M
                                                                        begin
% ^$ n4 a* D4 y% A. r" b" d                                                                                time_ones <= time_ones + 1'b1;# l: u: T4 v+ z5 y! H$ M, G
                                                                                
8 L2 n0 z8 J% a9 V# }                                                                                if(time_ones == T20S)        //20s9 N1 l0 b" ?% J
                                                                                        begin        
  b2 d& H4 X. Y: P0 a) f, V: f                                                                                                //进入正常运行模式
' X* T. j6 f. i+ e' A' c                                                                                                dac_to_temperature_spare <= dac_to_temperature_i;
9 {  u. E: l0 k                                                                                                time_ones <= 0;7 H: _, \6 \/ P/ n
                                                                                                time_count <= 0;
( b, W. d% }) F0 P$ ]4 X( \                                                                                                system_run_task_state <= 8'd0;% t2 M, k5 q* Y. h5 V8 E
                                                                                                auto_lock_state <= 8'd3;
0 S: Z$ }9 y4 e# P% ]                                                                                        end
  p, d* o2 V0 S6 w% _, B                                                                                else! ?( K8 p3 q' v# G& b" k
                                                                                        time_count <= 0;
5 F, h/ c( t- F: ]                                                                        end& H* _7 U0 q- x. d  z
                                                                else
; N$ F7 H) D: U                                                                        begin
  J' b' K9 ]' W2 \$ b                                                                                time_count <= time_count + 1'b1;
; o+ i& X, }- |, r7 L                                                                                
8 w6 R/ P& M" ~, ?4 ^  p. c6 Y                                                                                //按键按下进行快速搜索
1 `6 I/ r/ S3 g$ Q8 K2 E  `) f                                                                                key3buf <= key3_scan;                                ( C" f3 P+ f0 z/ n6 ^3 e3 W
                                                                                if({key3buf,key3_scan} == 2'b10)
- i  t1 g7 C9 `8 L4 A5 U1 b5 u1 x                                                                                        begin5 [% d  R7 o* Q
                                                                                                time_ones <= 0;+ g7 J& {. Y3 y
                                                                                                time_count <= 0;
0 E+ r& O7 r3 [6 i. s7 l                                                                                                auto_lock_state <= 8'd2;' k( q) w5 E' h6 C% b$ T9 c
                                                                                        end
0 O- T$ [  G5 _) \- e* x; Z                                                                        end        3 {. `0 V% B( {8 Z" v
                                                                                
$ a1 v2 r" o' Q+ N                                                        end$ ~- H, W( @; B$ _
                                                
, J7 E$ o- \# i' Z- S& C7 \                                                8'd2:                        //快速搜索
5 q# Y9 U+ n% v! C! h# O( R                                                        begin
3 S: B" g0 m/ S! d" D7 M- D0 a                                                        5 i! ^! u9 L- l7 a/ ]
                                                                fast_search_task();
- F0 p* k. f0 W8 L9 L* ~; Z8 z6 `7 e
                                                        end1 D" y6 w8 _9 M9 y3 b% Z+ s) v% R
                                                        8 J# F' z0 z* ~% z+ T
                                                8'd3:/ F$ o& i/ m0 U2 E5 @
                                                        begin                //模块运行
. v7 t3 B, H4 T                                                                        
) m3 a, T# N% m1 P2 F: y- m8 ], O                                                                system_run_task();
  Z8 ]0 c% z, E3 d  V; R                                                                        
+ [5 }1 P4 A, X  ^/ I/ r7 b                                                        end/ k8 C# F: Q' S* A5 t# @* |( N
                                                + W  k- V3 j8 t
                                                default:
4 Z0 I1 q. }3 n                                                                auto_lock_state <= 8'd0;                                                0 X+ |& K" D4 X) H7 f2 k
                                        # Z: E) J7 j1 ^
                                        endcase* N! K% `: y6 y2 U
                                end
7 Z; F2 U, ^/ Y4 l6 i* J        end         
7 E& N( ?+ [! a/ y4 U        
& ]) s# A; o* o! ~2 n        9 }" S. |5 f1 y1 ?8 r- Q
                                ' d2 D2 a$ r' l3 t! \
        //快速搜索模块的任务" |5 L& {# \$ E
        task fast_search_task();
! e$ g$ _# d0 A7 J. t        * ?% [* O9 u5 Q
                begin
! z2 Q1 y$ j2 @7 \+ g! `, p               
5 ?, H: V- j- D1 g$ F  R: q6 e                        key1buf <= key1_scan;                                
5 O, v, C& ?+ @1 k7 \                        if({key1buf,key1_scan} == 2'b10 && dac_to_temperature_i < 14'd16373)        //下降沿& c& _6 ^" p* O& Y; L: S0 c
                                begin. y+ g' D7 K" y" c  m( N
                                        dac_to_temperature_i <= dac_to_temperature_i + 10;        
# U2 E) c; z& d/ W                                        dac_ch1 <= dac_to_temperature_i;        
% g% J2 j* j: B* w/ J  F                                end
2 `3 p* Y1 n9 j, a: y1 j, _. D4 O* S& \2 l4 }& C' B
                        key2buf <= key2_scan;                                , E* ^3 n  {$ p4 V- |0 ^8 S: T2 c
                        if({key2buf,key2_scan} == 2'b10 && dac_to_temperature_i > 14'd10)        //下降沿9 l" P- W6 o# {7 \- N+ M
                                begin
3 q) X. S# t- c6 a. ^; S1 d                                        dac_to_temperature_i <= dac_to_temperature_i - 10;        
) E- \- [, T& w3 i. X5 V                                        dac_ch1 <= dac_to_temperature_i;        
  I- x; X) n( M2 W" U                                end; ?& L$ r+ U. S* }2 n, Z' e4 p9 ^  Q
                        - f" @4 D$ R1 c* o# D5 P: z2 v7 j
                        //模块运行
4 z3 {5 l$ B' m$ h                        key4buf <= key4_scan;                                
/ C) z7 j' w+ z: w/ Y                        if({key4buf,key4_scan} == 2'b10)2 Y  T5 J' R5 Z) L
                                begin
) |7 o* a& p# f7 b# z                                        dac_to_temperature_spare <= dac_to_temperature_i;
) A5 O$ e! Z4 B# U( b                                        system_run_task_state <= 8'd0;& X) y+ A6 E0 k& ^7 |5 ]0 T* t
                                        auto_lock_state <= 8'd3;
: I: C. G9 Y2 Z7 G5 F1 e) @                                end                        9 f. q2 ~& j) Q) `: D% Y1 u
                        
" H9 w/ G7 T2 T' M                end
" z# l; b+ i5 }; H/ N" \* R% V2 U               
4 ~# V+ M+ X+ F8 n9 I        endtask
" W% k* J& y$ N! @8 v) V; X1 \& }+ d+ M% R* S6 Z4 b6 J
        //系统运行任务
& X: A7 ]+ e; Z9 ~7 l: e        task system_run_task();
9 [& [( y6 R& o* [% V0 O2 t                begin
! [2 p' O0 r* P+ c% Y5 {" Z" R                                case(system_run_task_state)( A; Y+ Q& K- x/ {6 N5 a! E2 ?
                                # Y" }* ^* u7 x: l* F
                                        8'd0:                        //初始化) v* w# L' L: T3 s" N0 O
                                                begin5 S3 I. Z6 i2 u# N# f" J

/ v/ M" F' |( `, j                                                                time_count <= 0;
+ k* }, U3 ]* [" [7 H1 h5 F  g                                                                time_ones <= 0;
4 w1 }+ o% t. P3 S                                                                ) I) e5 c+ _7 r2 j/ O4 J
                                                                pdh_ok_count <= 8'd0;- x! i9 f) c7 L3 D$ x8 {1 l
                                                                pdh_ok_count_N <= 8'd3;. ]& d7 J; x! k4 a' M
                                                                , B) x! ^& `* b0 A8 L; O  B
                                                                pdh_time <= pdh_time_INIT;
( _- N$ h1 w% V; q2 k% V' d) w5 p) a
                                                                pdh_ok_delay_flag <= END;
$ k3 e, m  i9 A                                                                / B5 j: O% m0 Y# r
                                                                locked_fail_count <= 8'd0;        //锁定失败计数
9 F4 W, ^# n& P  X                                                                3 s) E5 F9 E2 ]6 @9 o( _, D+ \$ J
                                                                analog_switch_1 <= OFF;8 K: ^- p/ D- ^3 {) o3 T* P! p) y
                                                                analog_switch_2 <= OFF;4 [5 I6 B# v8 x# T8 [& T
                                                                sawtooth_control <= OFF;        , z+ `- l) M% P* y
                                                                , J* K. T9 p' U' z2 Q' A
                                                                system_run_task_state <= 8'd1;
1 F% |9 Y& o4 P5 M7 \9 J! U) i4 p6 u& I' m; F# A% L% V! R
                                                end
; C: ]$ Y, q' M( y. h+ n6 {' ^        
% D4 b& F* r* {9 U3 \3 M: @# g                                        8'd1:1 K7 C% _; A( _' ?. Q: h3 I2 T$ C
                                                begin
# n# u; `5 Z% k* A9 Q3 u* c                                                        //init i = 0. U( k/ J7 b1 U
                                                        dac_to_temperature_i <= dac_to_temperature_spare;
* t  z) a4 ]# s2 J+ r                                                        N <= init_N;! `/ a, d% s0 c$ G; d4 u9 `$ d
                                                        K        <= init_K;                ) T' e" J, D- \: G+ `9 G) V
                                                        DIR <= init_DIR;        //init 扫描方向                                                        
; M* S& |* d, d1 I: U9 b8 @( {                                                        6 i, M+ _3 j/ h7 e' V
                                                        system_run_task_state <= 8'd2;) b4 i1 `! A8 f8 m7 L& ?& v( z
                                                        
  _& |- {, F3 b  K. t                                                end
7 v$ w" E7 S" V5 L: H2 ]- \                                                
5 j- A; Y7 ]0 N/ ?                                        8'd2:
2 y5 X$ K2 z2 d5 r" I                                                begin
  n' M# m. y. K; e( p; v. L5 {                                                        //start pzt scanning( V' Y0 g  f$ y, P* D9 k
                                                        analog_switch_1 <= OFF;5 ~7 Z% j3 ^( y3 p. o7 R
                                                        analog_switch_2 <= ON;
) U9 b& e6 D9 @3 }0 G' O                                                        6 P: A" @0 R. W# Y2 y7 B
                                                        //开启锯齿波扫描- S  T* c2 L+ T  ?% S: Z8 y
                                                        sawtooth_control <= ON;        
9 c: K  G" g3 G8 Z4 J* h- j- ^- O                                                        
; C0 D3 }6 V' a- i                                                        //T(i) = V * step * i;8 `% H' i5 y+ w# P: R) N) ]$ n% f! n
                                                        dac_ch1 <= dac_to_temperature_i;
/ C, S# [' q8 a  C0 @& E  b                                                        time_count <= 0;
7 I* P* \6 U9 H( i  z5 e                                                        time_ones <= 0;
6 W( ?, z) f( w- ?. o                                                        system_run_task_state <= 8'd3;
# Q5 P/ }1 I$ ^( j2 B" ^                                                end
. x/ a0 R  o4 B9 z6 d" t' {2 {                                       
  [. e# {/ l* w: {                                        8'd3:
$ Y% `# L6 `/ a9 G+ g4 ~8 [                                                begin5 b! Q9 c8 I, D- B9 h6 N2 ~! K
                                                        //wait 4 - 10s
8 ~% d+ X% D1 i8 H9 i# R& m3 K                                                        if(time_count == T1S)        //1s" P7 U& j, V* A- l  T
                                                                begin
/ D7 e6 a+ S' y8 j+ h( o                                                                        time_ones <= time_ones + 1'b1;
+ t3 Q- x1 f9 }. V4 e9 z3 s4 @                                                                        4 Q) t2 p9 S' b8 W6 D$ ?" ~
                                                                        if(time_ones == T2S)                //2s- r( h4 J0 W; R! x$ Z: C; q9 W( [
                                                                                begin
3 A" s: _0 j1 O# u3 \+ [2 o                                                                                        search_mode();        //扫描模式
  H1 x: [: D9 n2 p* S- D                                                                                        dac_ch1 <= dac_to_temperature_i;        //更新数据
: g7 m$ R7 w5 }  {% U1 L: f5 v                                                                                        time_ones <= 0;
' K# G6 g+ c+ V# |                                                                                end        
+ D9 s- f$ \9 m                                                                                
( O6 B1 j# w, Q% [+ h8 I) F                                                                        time_count <= 0;: U0 _+ _! \) [. y( m$ \
                                                                end
: ]/ Q: h) I/ ^( t! x                                                        else
0 J& m: \9 H6 j8 {, {2 F+ b$ |                                                                begin
8 n; g; X* F+ j( C% u4 i                                                                        time_count <= time_count + 1'b1;
( j! o6 N5 X, U- M* w, Y* e# w                                                                        8 X7 ?. Y$ I2 b& q) p" |
                                                                        //PDH OK?                        //判断是否找到信号* i/ s- z+ R/ `: _$ ]! @& @
                                                                        if(pdh_ok == LOCK)$ `1 p: h3 f( w
                                                                                        begin$ o* I2 H1 }! P, l
                                                                                                pdh_ok_count <= pdh_ok_count + 1'b1;
- y7 j% a2 W+ v) a5 X! W                                                                                                pdh_ok_delay_flag <= START;        //开始延时; E3 y% d! P0 V+ J
                                                                                                time_count <= 0;
2 O3 s+ l3 v9 o                                                                                                time_ones <= 0;
; r" ?3 d& s9 n" P, J, Q5 ]( g! m                                                                                                pdh_time_count <= 0;' j4 w; a4 C; b4 b3 R3 ]
                                                                                                system_run_task_state <= 8'd4;
+ F/ _7 F5 v- D2 |                                                                                        end
) d7 A0 [% f. t, q; l                                                                end6 I; M6 E( ]2 V! M
                                                end4 Z5 j& R# p* X/ }6 f
                                                
+ L0 k( y/ S, k: B& ?$ [$ U/ j# J7 t, D8 w6 H
                                        8'd4:        //PDH OK Yes
! m# O9 Y4 H! g& N( W7 K# R                                                begin
# H/ o5 m+ C$ I( @& V                                                * `* n. P8 Z: M- h
                                                        //锯齿波扫描延长2S
  @) B, c( M( Q0 l( `( a# r                                                        if(time_count == T1S)        //1s
" ~; ~5 v4 S9 I  d5 O                                                                begin
# ?' E( c& p6 U. K2 a                                                                        time_ones <= time_ones + 1'b1;
6 B) d- D% m4 O, i                                                                        
6 }! P7 l  j5 w8 E; N6 u7 i" q                                                                                if(time_ones == T2S)        //2s
- s3 a* O# V$ Y9 ~  `7 T6 v                                                                                        begin
( p8 g. {0 M, \6 W                                                                                                
9 O/ B2 R8 ^1 |/ b. _( ?; ]                                                                                                if(pdh_ok_count >= pdh_ok_count_N )        //真信号
; a4 w# p% V6 q3 R. |7 j                                                                                                                begin+ H  N2 @4 f! L8 o' _
                                                                                                                        //pdh_ok_count <= 8'd0;
. k% S+ h, ?: s- x+ Q8 N, r                                                                                                                        pdh_time_count <= 0;1 y8 B( f3 I, i. h' j
                                                                                                                        system_run_task_state <= 8'd5;        //搜索到pdh: j2 ?# l% W! u7 r: t4 ]
                                                                                                                end+ o  A. P" T9 V' H# H9 \, e( |9 V
                                                                                                else5 B9 _( ^& b, y4 G2 ^" ], a
                                                                                                                begin& m3 p. X0 Y# k9 a
                                                                                                                        system_run_task_state <= 8'd3;        //重新扫描7 S4 U+ t, e! N6 X! o4 ], w" a
                                                                                                                        pdh_ok_count <= 8'd0;
0 ~2 _0 f. }; D+ T5 z7 q: N                                                                                                                end, B: C( E  J0 H% @/ ~7 ?3 T4 p" e
                                                                                                                1 y: t- M$ e4 K- }
                                                                                                time_ones <= 0;, N6 x. O  z( ^  E, C# t
                                                                                        end        
; }3 A1 k: J6 o4 ^  }) T                                                                        
$ I# p- i4 W( U2 t: _                                                                        time_count <= 32'd0;6 d8 l8 z( _; q+ E6 e
                                                                end
4 r6 L# W8 t1 ~; ^- @: d! d& Q                                                        else1 k0 U5 N5 C2 s# w( ], ^) Z
                                                                begin" o% L9 [, H) t8 e8 }2 u! ^$ A2 A6 v
                                                                        time_count <= time_count + 1'b1;
' r/ \" D7 _/ E  W1 B: g                                                                        5 J' Y7 j% m. x
                                                                        //pdh误触发处理
) a& K3 J, Q3 d& |: C9 y9 A                                                                        //开始延时: ~# K  u. |1 x9 V
                                                                        if(pdh_ok_delay_flag == START)
# P; i) b1 P9 x7 F                                                                                begin
* ~% Y/ c/ K4 D% s                                                                                        if(pdh_time_count == pdh_time )        //ms
$ b' T! X' H4 X1 ]* Z8 i9 {                                                                                                begin& C: e; K7 i- E
                                                                                                        pdh_time_count <= 32'd0;        8 `9 o% c" F4 Z; P8 S1 K
                                                                                                        pdh_ok_delay_flag <= END;
' k( a  l& M( u6 e" F/ q1 J                                                                                                end( u/ U( A3 W* v7 f
                                                                                        else
$ `/ o! y& I% S6 {8 k                                                                                                        pdh_time_count <= pdh_time_count + 1'b1;# `5 {4 J. W: E& @: s  f
                                                                                end
+ S' {) U- Z1 L' z0 T                                                                        else
9 D. Z+ c  Y: B8 R& M9 q9 r+ [1 o                                                                                begin
1 ]3 T, E! s$ T- @8 A; |- Q                                                                                        if(pdh_ok == LOCK)
" V, x9 D% `* v  n4 T6 m                                                                                                begin+ ~6 o7 u7 [) c! \7 _. e1 B) t( F1 J
                                                                                                        pdh_ok_count <= pdh_ok_count + 1'b1;
5 y  T  @6 Q) p+ G/ j; @                                                                                                        pdh_ok_delay_flag <= START;                                                                        # n5 _" Z8 [; Z. w9 W6 z4 W
                                                                                                end
; l% q+ @/ [  j' t4 Y                                                                                end0 b) b# [( ^5 s2 x* J
                                                                        end; O2 o1 h# {6 \: A! U
                                                end
8 _& P3 v$ I9 W' T                                        9 d! o5 R4 H+ E- }; Y
                                        8'd5://search pdh ok 8 }) A# f0 g! I& ?1 u9 [" X; [
                                                begin
) H' I$ z/ U: t                                                
: E1 Q$ [7 @; S4 d
! b& C) [7 }3 s5 z- f                                                        //stop pzt scanning1 }0 r8 X& e) e4 M- B$ ?
                                                        analog_switch_2 <= OFF;6 p. Y5 \4 Y/ y! ?) H: _
                                                        //analog_switch_1 <= ON;0 e6 O: T$ `4 G" m; S% r" T$ P5 i
                                                        sawtooth_control <= OFF;" H) g3 ]* |( V( q% L0 @
                                                        - d  N% p( p3 t& |  @6 ?
                                                        /*- ^* a: q) Q6 |6 y/ F9 E
                                                        //100MS等待
% Q# {+ C4 I: t% ^8 O$ X                                                        if(time_count == T100MS)        //1s
) l3 i$ g5 l; g" E                                                                begin7 g' C- D% H% C" }6 ~3 K, b; ?
                                                                        system_run_task_state <= 8'd8;
$ k3 C6 ]9 h( k% n# e                                                                        time_count <= 32'd0;
. G% w) Q, j; Z( H' i& ^                                                                end
0 ]4 c9 j2 z5 P% K                                                        else, b/ L% U  S: V' S, E3 g7 Z; }: k
                                                                        time_count <= time_count + 1'b1;. S/ z- C& B9 M4 c2 ]
                                                        
  J3 h8 Z" t$ H" o                                                        */                                                        
2 C9 K& j0 r6 k0 O3 u( y* x                                                end2 n( a. T$ w9 @* w  Q! @6 T
                                       
  }3 c7 I, ~- N: m& l" j                                        /*
0 k+ G# `( S7 F, O/ W) J                                        8'd8:
. Q0 T& U! s: n; d                                                begin* Q; ?" y. |- E9 M9 j
                                                + R0 }( I! L! l4 I
                                                        //锁入过程
' b: v4 L, y6 [* @! e, ?- ^                                                        //analog_switch_2 <= OFF;) l& Z8 T/ k) q  p$ G6 f0 {$ N
                                                        analog_switch_1 <= ON;
, W' o  S; C! t                                                $ u4 l( F  W! l' g
                                                        //2S判断一次
2 f/ N# b' N" q7 J6 y6 A" C                                                        if(time_count == T1S)        //1s
/ x# H; b- E' M& K/ N/ S9 P                                                                begin
) a6 T% E, U1 d7 P                                                                        time_ones <= time_ones + 1'b1;0 f2 t) N5 h& M  Q8 g
                                                                        time_count <= 32'd0;
. e6 z8 r' ]# Y# W% }                                                                end
4 }7 c" r( e; |                                                        else5 N4 s8 s8 q6 N
                                                                        time_count <= time_count + 1'b1;% ^5 w  l' m( x7 _; f5 k
                                                                        
3 @  Y( y& t( y) r( Z& b! w/ ]8 G                                                        if(time_ones == T2S)        //2s
. K9 p1 e# T9 V; d# R* }  h                                                                begin
6 w( F% e5 Q) v2 L                                                                2 w4 D0 i$ m! d) l
                                                                                if(locked == LOCK)                                                        / X9 O& G2 G" P; A; l
                                                                                                system_run_task_state <= 8'd11; //已锁定
3 f7 v$ M5 I9 M5 o& A8 n0 p& p                                                                                else: z4 |- L3 L! @8 h1 H! c
                                                                                                system_run_task_state <= 8'd9;        //未锁定# O! D5 f) `2 c1 x' P
                                                                                       
. E3 w5 y# x4 ?( J' Q' _  C                                                                        time_ones <= 0;8 m+ s- h  l! x! c. ^" ~+ v  }
                                                                end
3 s9 d. g$ l* x1 L0 }9 r) d2 D. ?! u2 x, r' \
                                                end% _8 m0 M" Y, }% k. L9 {1 ?
                                       
) u9 O, a1 \4 D5 B: O, u" O# q& `+ ~) V2 R# F
                                        8'd9:        //锁入失败
2 ]6 b. Y3 t1 u# |                                                begin
# k- E" I# a0 Z0 O! s2 t7 x                                                        ! p  d  x) `+ \( L8 u% e3 s
                                                                //锁定失败计数 ' e; @' X' w) B% R2 ?
                                                                locked_fail_count <= locked_fail_count + 1'b1;
$ F3 d9 A: `# I$ {/ x) v7 K3 _$ `                                                               
9 n; O7 f7 w0 F9 s! p                                                                if(locked_fail_count < 8'd5)        7 |+ [( f% k3 P) t
                                                                        begin
" J" l& ?8 n  w9 v' L5 L- W6 @                                                                                system_run_task_state <= 10;* V7 m1 {1 j, G+ N
                                                                        end3 q% @/ e4 z' ~* @) s3 V& g0 `
                                                                else
9 Z5 `( t7 ~! h: S                                                                        begin
: S) Z3 `8 e9 B$ t# u9 j$ Z) A                                                                                if(dac_to_temperature_i > 14'd0)% L0 |8 b' O6 p; v% f+ a. n
                                                                                        dac_to_temperature_i <= dac_to_temperature_i - 1'b1;
- F& U% u' F1 S" r" ?8 y9 U# F                                                                        
- a4 U9 m  s9 Q/ c                                                                                analog_switch_1 <= OFF;8 w/ m( ?$ K* G; P$ m
                                                                                analog_switch_2 <= ON;        / P' ^3 z% T/ V- t# ?3 x
                                                                                
6 [7 k3 U, h) a0 w. \( y. z                                                                                locked_fail_count <= 8'd0;* X" h) G; ]8 [# W; T# K
                                                                                ' u6 t% w$ h3 e; X
                                                                                system_run_task_state <= 3;
: O) ?: {. ]5 y- S6 d# m+ ^0 U" F8 a- |5 Y. @/ S  F
                                                                        end
! B" G2 T+ W3 H7 b5 r5 Z& h9 s3 n. g$ J' {& v0 [3 R
                                                end
: U+ m' `1 T  d8 ~" T- p8 t& R# N
: P6 Q" l. n7 |' T! \! Y. Z: s- v                                        8'd10:. l9 @# F- {! i0 r% i
                                                begin
& L  e$ m& r. @                                                
, B/ l, T" |! D& R* C" w, U                                                        analog_switch_1 <= OFF;+ {- C9 `& ~+ L, ~! _8 f
                                                * m( r+ w7 ?0 V! b
                                                        //2S判断一次% m! R% F0 s3 _
                                                        if(time_count == T1S)        //1s
' E6 W! n2 \. V5 y. [! g                                                                begin
# p# N9 @3 R6 d' ~5 i                                                                        time_ones <= time_ones + 1'b1;
; D0 W  s$ u% |                                                                        time_count <= 32'd0;
5 v" g+ e7 _2 Z2 E/ {) Z( T/ ~                                                                end  z! j3 y' K' M; y9 C- |& p+ A
                                                        else1 T2 h- X( Y% D' |
                                                                        time_count <= time_count + 1'b1;) q0 k+ }  F8 Y0 k2 i# P
                                                                        
1 k) I# U5 Z9 }! l                                                        if(time_ones == T2S)        //2s
+ c+ K  k. }' o+ I) G- \) a7 W0 {" X$ P                                                                begin% q" g2 g) o' i6 t
                                                                        system_run_task_state <= 8;6 Q$ K; Q. p  q1 W/ o  c& N  U
                                                                        time_ones <= 0;
4 i# U% F0 U  ~3 O  c! f1 Q/ s                                                                end
5 ~: u( R+ f- `, E                                                               
7 S' b5 [, X: t$ B) c                                                end
* j* D1 H1 \3 O& h/ N                                       
7 }9 @( W* c  O. V5 ^2 U! s9 ?' i  _: U8 p8 X
                                                
& K9 `& }7 i$ X6 }) _                                        //锁定状态下的运行: X  n) ^$ v" c7 Y& H* P" x
                                        8'd11:+ y  X( l7 u* H+ V+ l' W( ^
                                                begin
: ?* b, y) y( t2 B0 V& ^2 E0 l9 y+ _! ?
                                                        //5S判断一次' b& g: T% ^1 f8 b
                                                        if(time_count == T1S)        //1s$ Z3 v# t, D1 r" _" E: r3 S
                                                                begin5 w* b6 ~- n  J8 v, G' h) f. F
                                                                        time_ones <= time_ones + 1'b1;) ^; q. b) W- }" R8 R  p
                                                                        time_count <= 32'd0;; b, V" W# [; w$ p% c8 Z! |- P
                                                                end& z. _3 P1 y: ^1 q6 W- ^; v$ F/ {6 D
                                                        else9 X( l# |) @- S0 l" I# u1 ?+ r' n# A
                                                                        time_count <= time_count + 1'b1;
6 ^, _" M: i/ p- ^5 z1 H- B                                                                        
* b9 t' A1 O1 A  I+ @7 ?                                                        if(time_ones == T5S)        //5s
, U) v% w7 I6 x* O                                                                begin' R8 |5 V$ R4 j. M0 b7 D
                                                               
+ x# z3 i7 [6 G5 t                                                                        //电压 > 1 并且 处于锁定状态5 X4 f  v3 L/ m1 p+ `" x
                                                                        if(adc_ch1_data > 16'sd6553 && dac_to_temperature_i < 14'd16383 && locked == LOCK)
0 S( c# K( H: {7 l& ~- s! c6 _                                                                                begin; @+ N8 `3 {+ u& d) q
                                                                                        dac_to_temperature_i <= dac_to_temperature_i - 1;
5 ~5 O/ ]+ J$ C* ~, }1 r  e                                                                                end               
3 d# _5 A/ _. H) k+ q7 d& V                                                                        else if(adc_ch1_data < -16'sd6553 && dac_to_temperature_i > 14'd0 && locked == LOCK)
9 k7 T  d6 p9 J8 K5 s                                                                                begin- x% r# |& n) `$ Q6 p  X
                                                                                        dac_to_temperature_i <= dac_to_temperature_i + 1;
0 w/ j' x# C& ~3 J3 `5 L6 A. x                                                                                end                2 V2 H4 z$ p& Q! u9 P
                                                                                
" @7 F' A, j3 O' \8 s) j                                                                        //T(i) = V * step * i;
" z' Q: p5 Q/ z9 V) G6 U. X" Q                                                                        dac_ch1 <= dac_to_temperature_i;        
( H; k' a+ W2 v9 ^6 B                6 u) v$ P/ R9 w) L, {7 J
                                                                        time_ones <= 0;9 K7 Q6 ?7 d6 I! [/ y
                                                                        
1 D# e4 Y6 B2 |1 G( k4 R                                                                end
3 p7 J+ ^2 c( E' |5 k- F; p: T                                                        
6 ~: |7 R. v' Q; X, c7 r# Q                                                        : f; _0 B3 i# J$ |( C
                                                        if(locked == UNLOCK)        //unlock5 x  F" d5 `5 ]* q  L
                                                                begin
; }; `4 V* ^2 F* ^+ F6 W                                                                        
, C7 a, n9 l# D/ b6 H                                                                        % g2 r- x. J( s2 S, B9 e/ _
                                                                        dac_to_temperature_spare <= dac_to_temperature_i;        //记录失锁值 从新扫描时从此值开始, `& ~+ l8 X% q
                                                                        time_count <= 0;0 o  z. n3 V1 L3 p3 c5 ~4 l4 j% |
                                                                        time_ones  <= 0;  _- W! t6 E2 [' r# Z5 b
                                                                        system_run_task_state <= 8'd2;  //重新进入扫描模式3 s+ x0 ]4 v3 D9 w: R9 R" l
                                                                        
% F# H* D5 Y: K. b! x6 J5 ^+ j                                                                end
9 b! d5 c. u7 |0 t                                                end: q- a. c- U( F) i% {+ G- w
                                                */: B& S% r/ B' M3 d  h' z* v  t' M+ b
                                                , V/ ?- A8 a- f9 X  c- s
                                                default:
4 \5 v# Y4 R3 e7 J, X/ A  n                                                                system_run_task_state <= 8'd0;
' W2 z; }% e1 F5 I4 D* m; f                                endcase: Q/ J# X/ S' K4 O  \! r
                end        , m8 ]* Q/ j- X$ f: L
               
6 f1 J, g6 Z+ A8 l        endtask. f5 F5 U8 L) r- K; D/ _3 _
        
2 S4 Z) |5 X( l' ^' O3 L" t8 Y! K4 l3 ?+ r4 }5 p
- V( c  H5 j  z$ `9 i
// 扫描模式
& q6 [+ d0 N9 ]) Xtask search_mode;
4 G4 v6 q4 E6 f" l                begin4 O! \" n, p, |% o6 s9 C) {
                                //切换扫描方向
1 ^% z; J: y1 J) O1 H' Z- O                                if(DIR == 4'd1)
" w% s6 |' b7 `! a' V7 d  v' Z9 u1 r                                                begin7 D( m& Q5 ^0 i, H0 u; R; B% ^$ C
                                                
/ S7 @; w8 I# h" h% p                                                        if(dac_to_temperature_i <  (dac_to_temperature_spare + N))        # F/ B9 R0 r1 B8 r. Y# f: l3 }0 D
                                                                        begin   C: v5 u6 e: V: J* ?+ a% {* S
                                                                                dac_to_temperature_i <= dac_to_temperature_i + 1'b1;# u7 y( Q7 t2 D4 M
                                                                        end
- r$ D0 F) l7 O4 N% a/ d4 f. P                                                        else
6 j! W( }: U9 P                                                                        begin+ H$ m2 C1 x7 Z: f4 u
                                                                                DIR <= DIR + 1'b1;7 U' p  C$ M( |8 U8 @* i# W
                                                                        end" S9 e! D7 Q) C) {
                                                
* c; j& g  y/ }, C+ l                                                end
* e7 a" J7 A3 @& Q$ [- x# [% U                                else if(DIR == 4'd2)# c# t# F& q. f% P" V
                                                begin
8 H) M% x3 a, Y( h3 x2 m                                                % o+ x- |! ^) h. K; j
                                                        if(dac_to_temperature_i >  (dac_to_temperature_spare - N))        
$ k9 P1 ]+ s- S  j5 W4 l- z0 t( P                                                                        begin : |7 h4 j  x/ a0 }, J
                                                                                dac_to_temperature_i <= dac_to_temperature_i - 1'b1;
% w- u; Y% H5 o                                                                        end5 P" x: N9 r: {, X5 T+ I5 O
                                                        else
7 |% l" J2 l0 T8 q* a4 O2 K                                                                        begin
+ E( a! @! J2 x( [/ a. Y2 Q                                                                                DIR <= DIR + 1'b1;
& G# M; O6 v5 l& ]                                                                        end3 |# |/ j. t$ l( i/ y1 R
                                                                        2 g0 h: R* J6 G: Q2 N* I
                                                end# Z/ ~( p) F- r- T
                                else if(DIR >= 4'd3): \3 g( ?) \5 N
                                                begin
* n: k9 s. T9 \& S& Z                                                - i5 H9 Q  p8 J/ [$ B! H
                                                        //扩大扫描范围) o4 g/ h  z& B
                                                        if(((dac_to_temperature_spare + (K * N)) < 14'd16383) && ((dac_to_temperature_spare - (K * N)) > 14'd0))
; V" ]1 {& O+ h) |# N                                                                begin# v  _- k, T& a9 B( u- o( v
                                                                        N <= (K * N);7 L/ F7 \, V9 Y2 H4 l
                                                                        DIR <= init_DIR;; Y& a6 a! ^6 Y9 `2 Y# c) E
                                                                end' O9 ^# w, e7 S  @
                                                        else
: t# j" o, S. f9 b' r( e' Z, m2 z                                                                begin4 [' U5 c9 [" G+ U* b3 w
                                                                        dac_to_temperature_spare <= 14'd8192;        //0V0 {& j# H7 o( R: O
                                                                        system_run_task_state <= 8'd2;        //超出范围重新扫描& i" b1 H. ^- m$ u/ C  n$ }+ z
                                                               
8 v1 i' o& R  J  V% F                                                                end
( z5 L7 r9 ?$ Q+ j4 \                                                end
6 ]  F; D2 C/ Z8 Y9 C) F+ Y! J' u8 z8 X, x* Z  Z
                        end( g6 z% p- n! q
endtask
1 {7 t. Z8 v8 E* J( r! p! U4 v
% k5 Z' ^5 C$ a) b3 mendmodule
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 16:58 , Processed in 0.171875 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表