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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
请教大神,$ Q( g% Y/ [4 M* S- b( i; k. c
我使用的是黑金AX309开发板,写的一个程序,烧程序在板子里跑的时候,按下复位有时程序直接跳过预热部分进入运行,有时就直接停在预热这里,有时就正常运行。我在Modelsim里面仿真的没有问题,在仿真里,复位后都是正常执行的,求助大神,非常感谢!3 T/ \, \  A$ k. |3 G, o" d0 Y
`timescale 1ns / 1ps5 V# y) M9 p) D' D
//////////////////////////////////////////////////////////////////////////////////8 m! n2 g, m' x7 G- e! G* j; s8 f2 s
// Company:
$ D2 `1 N* U. U7 s  g# q, o4 a  V// Engineer: 0 P  T3 j2 i6 U  r6 }
// / |& T4 H+ i, Z* x1 |1 F; P
// Create Date:    13:38:11
2 I0 A: p$ l0 {6 }! _// Design Name:
" ~. m1 Z7 O2 g8 B% e// Module Name:    auto_lock $ q9 h  s( k& b2 a; l0 r2 D" a
// Project Name:
) ^/ N7 F3 N9 l6 M7 m8 V1 L// Target Devices: 0 x9 C- ]- ~% q, u
// Tool versions:
4 w( K( X( Q5 o  }3 a// Description: + L0 _0 l+ T1 y- s" E
//: W' w; J9 O4 X$ [; O
// Dependencies:
& O- R# p+ A. ~//
) z: N  `- H4 L# l. X// Revision:
  i( O- o& t# \/ Q+ s# c. V// Revision 0.01 - File Created
- d& x1 n" Z$ \4 v2 g3 ]7 T// Additional Comments:
( |# a: c1 A. g( E//
  K/ V9 Y' z9 w; U( N9 U% t//////////////////////////////////////////////////////////////////////////////////3 H$ O; [2 q& G
module auto_lock(
1 \( H1 \* J+ t5 z+ C6 y
4 d8 h; b; E3 Z8 y. H* P                        input clk,                                //系统时钟
/ l, @; |. q( Y+ U; z0 |                        input rst_n,                        //系统复位
8 U+ U5 Y: Z2 t                        input lock_signal,        //失锁锁定输入
: j- k; n. y2 K. k# W' `5 [                                                $ e. f7 `- q4 o
                        output reg analog_switch_1,        //模拟开关1输出8 H  f- N- |! N( G8 P8 g' d* ?
                        output reg analog_switch_2,        //模拟开关2输出/ s: t  O. D% p4 h2 V
                        output reg [13:0] dac_ch1,                //温度dac
5 f, ^+ i! Q$ }                        & X. H/ D1 i0 |4 y6 c  |$ |
//                        input sawtooth_frequence,                //锯齿波频率2 W3 t0 ~7 a- }2 M! U/ x& `7 {
                        output reg sawtooth_control,        //锯齿波控制+ A. f# ^# v2 o1 D9 H* ^
        , `& p+ s; L, b, `: c( X1 R
                        input signed [15:0]adc_ch1_data,        //adc ch1电压值2 l+ H( m0 v1 A2 C" ~$ }) h/ I

' K  k, _- k1 a  f3 a1 K7 x; Z! s+ ~                        //按键输入
2 {. q9 V2 [" ?& p- D                        input key1_in,
7 t' `4 O/ S$ }                        input key2_in,5 L3 S% o% o3 M  j' ]" ~: G
                        input key3_in,
7 q1 n4 w  ]7 y! _2 }( u                        input key4_in,
6 T, R: u! m- T* d# e  i* w- g' M4 B& t, C$ r( X
                        //系统状态指示
) ~9 |- e  ]  m$ Z0 B                        output lock_status_led,        //led- t$ c2 @8 t+ a6 }% \2 D+ g# l
                        
' D. X& H9 c# V6 T/ t& Y. r9 `1 u7 P                        //DEBUG数据
3 p& D" E9 B5 J3 m# e' h" W                        output [23:0]debug_state_value,
6 M+ F$ z; L' e/ D4 f% }  q3 m                        output [23:0]debug_pdh_ok_count_value
# n  j3 g5 w' p0 [    );3 S0 ^# X- Z# ^% K  V
         $ l" A0 m& y' e2 q* g
        parameter ON = 1'b1,OFF = 1'b0;' S8 i; ~  S5 ^$ J
        parameter LOCK = 1'b1,UNLOCK = 1'b0;
8 x: P, O6 Y; a" C( h/ y        parameter START = 1'b1,END = 1'b0;% J. v& h! b: B/ p1 S
         5 e$ ~: \; @7 K
//        parameter T100MS = 32'd49_999_99; + b/ ^+ n* G9 r$ g
//        parameter T1S = 32'd49_999_999;
1 c" L2 Z% H3 K, h, F  ^2 q4 Y/ [, t& W9 F; v: n$ r4 k$ C4 {
        parameter T100MS = 32'd49;
; X' u/ f- ], f! {        parameter T1S = 32'd49_9;6 U: m& G9 l$ N7 x4 Q/ S( V
        parameter T2S = 8'd2;( o! H3 y, x8 ~$ Q# B
        parameter T5S = 8'd5;        
6 _8 g2 j+ G1 E) Q; }  p7 d        parameter T10S = 8'd10;
, g" |' P3 _9 z7 w        parameter T20S = 8'd20;        3 p! i7 F& f) w7 E$ ?' T5 y
        0 F! m2 q* H: B3 }' o& |
        //temperture search zero point; ]% g4 |; G/ i/ C/ {4 N6 s2 |( u
        //parameter EXPERIENCE = 14'd8540;        //经验值0 ]+ o% X2 X0 v: v
        ' P; R' B5 b: y/ D2 _/ b$ [
        assign debug_state_value = auto_lock_state;
3 ^. S9 G+ n1 W, v3 z" \* W        assign debug_pdh_ok_count_value = pdh_ok_count;& @& a9 x, H8 I( a% X# u1 c) S

, I; o  L3 [+ l- x7 n, ]( v        /**********************按键模块*************************/
( Y, n7 l- ?/ b* ^/ l/ q        keys keys_model(
6 ~0 Q* o3 t8 r; ^. M" A% @        8 V! }$ f8 r" x9 @, n
                        .clk        (clk),                                //系统时钟( s5 j( s7 j& ?, n
                        .rst_n        (rst_n),                        //系统复位
9 e* @* b+ B# h8 k. n% D+ Y
# `' W" X& i4 A* R4 s                        //按键输入
" ]9 y) O  t! u4 C                        .key1_in  (key1_in),
2 M# U0 j0 |1 U                        .key2_in  (key2_in),# l9 X! R- a- D. h' \& ]' G
                        .key3_in  (key3_in),
' E$ b7 B+ Y) i3 l6 X                        .key4_in  (key4_in),
9 U7 b7 B+ ^3 N, A, h# ]                        8 Q' F8 P6 I! M) V% H- D
                        //按键输出
, U( A0 e( h1 U1 q% Z0 J                        .key1_scan  (key1_scan),
  A3 n, \- ]4 f: D                        .key2_scan  (key2_scan),' \6 c' L) ]* h7 l
                        .key3_scan  (key3_scan),
% j. u$ G9 a9 I                        .key4_scan  (key4_scan)                ) I' q; u! T! D- ]
         );; O. q; Z$ K; m  j% x3 {

' G0 _) \( m! J, e& g- l5 d' }* Y( L& E, z: T2 ]1 q
        /***********************锁定信号触发边沿检测*************************/3 I0 j: L7 H& m" |
        lock_signal_edge_check lock_signal_edge_check_model(6 i  n$ C  w& x

% n6 F9 p7 M7 J4 U& ^$ i4 D                        .clk        (clk),                                //系统时钟& v$ f: h- y7 Q; t3 j
                        .rst_n        (rst_n),                        //系统复位
1 I$ M" w" L# g% X: D                % y7 ?& M9 ]2 g: ?
                        .lock_signal(lock_signal),
! c3 W! J! v8 s9 q) M3 i. i                        .locked        (locked),- ~9 R5 o# n! ]8 |5 {% j5 H( `% P
                        .pdh_ok        (pdh_ok),
" t( T  h- h( `                        .lock_status_led        (lock_status_led)
# l$ o7 W' C% _% w: |    );  ]1 V( T) U/ o: e# N
        
" Z4 q! J4 ?& V7 s* s! H        /***********************系统运行*************************/$ u& l: ?  i) t; n% ^
        reg[7:0] pdh_ok_count;) J5 b# a, }* Q: o( G* O
        parameter pdh_ok_count_N_INIT = 8'd3;% y8 e4 y& M, e& J/ i& J
        reg[7:0] pdh_ok_count_N;
, l& w4 G! [) D$ i, E7 h, i1 N& T. X# K) Y        reg[31:0] pdh_time_count;0 ^$ ?3 j% \/ d) J" ]# j8 n* }
        parameter pdh_time_INIT = 32'd999_999;
0 F& S. ~" b# b* c( Y0 u8 k        reg[31:0] pdh_time;        //在锯齿波为1Hz延时为20ms 频率越高锁定时间越短
! A% [; E7 H- r        reg pdh_ok_delay_flag;        //pdh延时标志+ x7 B! [" ]8 [* l
        
$ J, t4 I% U1 _        reg [7:0]locked_fail_count;        //锁定失败计数
) s. o6 F$ ]3 Q! @* x; Q& ~6 a        6 ]* n0 D, b' ~! u3 x
        reg [13:0]dac_to_temperature_i;
1 a* x( v- k; r0 v        reg [13:0]dac_to_temperature_spare;//备份值: q* ^' @* t4 u, r" P
        # [: D* m' P+ U) s
        9 l+ \% x( f7 s' V" B) V
        parameter init_N = 14'd8;        // N 的初始范围1 {5 ?/ a! b$ u+ T
        reg [13:0]N;
9 p+ X5 i& V' u$ W        parameter init_K = 14'd2;        //K 的初始值
# D: o$ D( U/ \4 w! r$ A        reg [13:0]K;
! g! ~" h% V5 y        ) [% k' d) A$ z- t% O$ D, R1 a
        parameter init_DIR = 4'd1;        //扫描方向初始为正
0 d' I) e; ]3 F8 g        reg [3:0]DIR;        //扫描方向
4 }% A; v; g3 x% Q9 k/ ^* z1 Z0 e        : D! g& b" ]9 R$ o
        
3 n0 b6 O1 q; g        
5 E5 |4 v6 H9 t- [! g! F, U        reg [31:0]time_count;0 C: \9 V( e) A. C+ s
        reg [7:0]time_ones;        5 f+ P8 z6 }2 [+ ]/ u- g3 n, G
        " }* t' o; m8 c5 ^
        reg [7:0]auto_lock_state;
4 _) G) E  L- r: D        reg [7:0]system_run_task_state;
1 ]; E& q) w3 n; D# d- A        
) t1 K) E* k! H, q: c7 V. F        reg key1buf,key2buf,key3buf,key4buf;6 l7 _( R& n% @- V2 g/ ]
: b; e# Y' P% D9 C/ {" I
        7 g1 p& j! D& Y+ l& ]; k
        always@(posedge clk)
4 l6 R2 N4 F! ]        begin+ H) ~( N! y* @4 q7 c; e( G
               
9 e/ _3 v0 Y- ?2 s  x* i1 u                if(!rst_n)        //低电平复位" I1 i# a. i, M$ C' |
                        begin. c$ n0 l8 l; B! h; |8 Z
                                auto_lock_state<= 8'd0;4 o- `& v# U) |' w
                                8 G! c. ^( H& \9 j0 o1 Q8 a
                        end. u6 d* w2 z" c* `& G
                else
$ G4 d/ n5 F/ F) d+ [                        begin
  u5 F. i' g' u, G% C, |                        , V" g( H, y% ]
                                  case (auto_lock_state)        ( q0 P% e& a: k5 p
                                                        
2 w& Q9 g1 t2 y& [/ k+ T+ y                                                8'd0:                        //初始化
0 F& S2 `* n. `( c                                                        begin                # E) ]1 z2 g% [. R0 l' P8 }; {0 a
          W0 j; G; m. c; a% l
                                                                dac_to_temperature_spare <= 14'd8192;        //0V# S) s9 T& {( ]# ~& j7 M+ o8 \
                                                                dac_to_temperature_i <= 14'd8192;        //0V* c) G6 _% @, o- ^* p% x
                                                                dac_ch1 <= dac_to_temperature_i;8 L3 u! {* B3 Y- M, C3 ]
                                                               
! E. t& ]4 u* n6 q, Z/ N, q                                                                analog_switch_1 <= OFF;
' \6 @8 W9 z$ p3 a, C" y% S                                                                analog_switch_2 <= OFF;
$ t, ?( n* g$ V1 T# p7 A1 {1 p                                                                sawtooth_control <= OFF;
: C+ L3 e+ F% N2 }                                                               
2 c3 f  T; z5 A) y. ^+ A                                                                time_count <= 0;  r' y% M. s9 ?3 w3 e0 @1 P  _
                                                                time_ones <= 0;
/ j( Z5 S  V1 d5 Z                                                               
% J: |: W6 q; i! H) z, o5 q+ h                                                                key1buf <= 2'd0;        
) c  t+ W) E: X% t                                                                key2buf <= 2'd0; 2 y* f/ c+ D+ ?' a
                                                                % M6 k) A  T: p6 u
                                                                auto_lock_state <= 8'd1;
& M0 h; D% |" M- E                                                        end
1 C+ x% t* s+ j1 ]% x3 Z                                  ) v9 v' ?# g9 @. h$ f( [
                                                8'd1:                        //运行- z( ?5 i4 d/ X2 b' x) A
                                                        begin/ _6 t/ f' h8 H* B7 c0 @  T
                                                               
+ J/ X( }4 L& c3 F$ B: G1 u" ~! D                                                                dac_ch1 <= dac_to_temperature_i;        ) p, y( Q! s6 g9 x5 o
                $ V) ^, E: i! ~$ H0 B! R# P
                                                                //系统预热20s
3 U) Q' Y; e5 L6 e9 |8 C                                                                if(time_count == T1S)        //1s
( }* ?: f' Q8 e                                                                        begin, s; G, k7 H3 j1 _8 z* W
                                                                                time_ones <= time_ones + 1'b1;
( f2 L6 \$ i3 p7 _: x6 E                                                                                6 ]2 k' m) F1 J) ]% }) z9 C2 R
                                                                                if(time_ones == T20S)        //20s
6 ~' x" O  K# y- z: W) H- a: ^* O                                                                                        begin        
5 ?* g9 b, |% @7 ~9 f                                                                                                //进入正常运行模式
% K$ `) Q3 j/ Z% k6 Z4 t+ s6 a4 g# o                                                                                                dac_to_temperature_spare <= dac_to_temperature_i;
1 `* ^8 ]; d; o3 |3 n                                                                                                time_ones <= 0;5 `/ S8 I4 x, N6 D; |# u0 o8 k6 A
                                                                                                time_count <= 0;! m7 X' @5 d5 j# X
                                                                                                system_run_task_state <= 8'd0;
& r+ l0 w. _2 L2 Z; q; V                                                                                                auto_lock_state <= 8'd3;
0 i3 ]& Z5 N: S# v/ ^, i                                                                                        end
9 Z/ {2 K9 k7 D$ `* N3 X                                                                                else2 [# {2 a' i2 O& a# P
                                                                                        time_count <= 0;
. M0 K0 l/ ?% C6 z4 C; k                                                                        end+ R+ K  f" T) h& P* d$ n9 O
                                                                else
* z5 R1 ~  c# b                                                                        begin
) w( P, j2 K" H! y                                                                                time_count <= time_count + 1'b1;
4 v1 h) _, A: F6 l                                                                                
2 \) I* k8 a1 P7 W# Y1 t                                                                                //按键按下进行快速搜索1 K2 {% f( v5 F" y+ z, q# b
                                                                                key3buf <= key3_scan;                                
4 @0 Z/ c8 `, j3 ?! Z                                                                                if({key3buf,key3_scan} == 2'b10)
2 g, t) u" {: V& `/ G! Z7 ]                                                                                        begin: z: B2 a, G9 b! k" X- E
                                                                                                time_ones <= 0;
* z9 {: F' |0 T3 w0 Y; I                                                                                                time_count <= 0;
1 c9 m. g, \0 i8 o                                                                                                auto_lock_state <= 8'd2;
' P+ c9 B0 d: ]  q4 T9 [+ t                                                                                        end% K( x. x( Z- Z
                                                                        end        
0 R& h7 P  v: t$ ^                                                                                % k9 g" ~' z' r4 I# V
                                                        end9 p- Q' }1 \7 O! h
                                                ) q) ?% G* D. R3 i& `
                                                8'd2:                        //快速搜索
" O0 K5 {% \+ Z2 p                                                        begin% M; S4 W, R" R' R- u9 I
                                                        + e8 w" o2 V# l+ W8 |+ X! l( _" {
                                                                fast_search_task();& ~' a8 W# M; N0 L
# a( W/ b7 o. b  ^7 x; H
                                                        end
% f/ x5 ^# ~/ V$ c" l. f) F5 o                                                        
: P0 N) v5 v$ {8 _4 c! r& u2 V                                                8'd3:
$ }3 V* R) q; [- T0 M& N: E                                                        begin                //模块运行- o5 o- [' [1 [4 \
                                                                        
" q. D1 w+ @% _/ ?0 F8 g& `5 A                                                                system_run_task();
+ |% j5 Y) {* V4 L                                                                        3 {  K7 M$ _, {5 f
                                                        end
% s, f8 N/ Z; R" c+ N4 V+ g1 }                                                2 k4 B7 B/ t) X
                                                default:6 U/ L- w! h) e' P  ]  U2 n
                                                                auto_lock_state <= 8'd0;                                                $ b$ P- k- W6 F
                                        $ C( _( I7 M/ G0 o
                                        endcase
4 x* H4 M" g1 i                                end
+ w# z* \) [9 }' I        end         8 y$ b5 c. i; [2 g7 I* q
        % G2 A2 t# H2 e1 S( {: `7 @2 j
        & j2 A' g' I! d
                                $ |* K0 J! J* T) I1 H0 \
        //快速搜索模块的任务
- j' G% {# N+ h: v& s3 x        task fast_search_task();' q( X3 N1 L( A. O6 h
        
4 a/ ^! f5 n" y                begin; X& [5 r7 f) a9 @1 g" w
                7 [4 O5 w/ c3 y/ F
                        key1buf <= key1_scan;                                
2 N+ U! I0 |' {1 P' a$ x* t; I3 d. a9 Y, e  V                        if({key1buf,key1_scan} == 2'b10 && dac_to_temperature_i < 14'd16373)        //下降沿+ j5 Z% ^1 G5 t1 [6 }) }
                                begin
+ @6 N+ w  L( P) ]) c                                        dac_to_temperature_i <= dac_to_temperature_i + 10;        
+ _5 q6 [( s- d9 O1 O                                        dac_ch1 <= dac_to_temperature_i;        2 ^/ h0 G, G- Q( R, B5 T8 `  m
                                end
2 i% ~3 |9 Y% [6 b- y( s( G1 g3 ?4 k5 ^5 h9 a5 ?3 I: U6 \1 w
                        key2buf <= key2_scan;                                
' R! @# {$ U' f' ?5 k# L  m                        if({key2buf,key2_scan} == 2'b10 && dac_to_temperature_i > 14'd10)        //下降沿& E( L/ ~' O& f7 \# t; i
                                begin
& M- U7 j  Y0 h& @/ e                                        dac_to_temperature_i <= dac_to_temperature_i - 10;        
& T/ L/ |4 n6 X4 z  k; W                                        dac_ch1 <= dac_to_temperature_i;        
# X' k! s) I$ J! d, \) S) F- n" g. }                                end
9 o5 t9 M0 }, P! ?3 Q                        
  Y# {2 v  y9 X; s1 N# S                        //模块运行9 C7 J% l9 B) `
                        key4buf <= key4_scan;                                
8 o, L, K5 R2 B' N7 T3 k                        if({key4buf,key4_scan} == 2'b10)
+ Q& [, r8 [3 a  C% X                                begin+ X1 o3 V8 [" f* ^
                                        dac_to_temperature_spare <= dac_to_temperature_i;
) A' k1 i2 X  d7 t! v                                        system_run_task_state <= 8'd0;
1 \* W1 R" ~% U. M0 B                                        auto_lock_state <= 8'd3;7 `8 }) h" }: F0 Y
                                end                        + k3 b: m4 g3 _1 r* x
                        ) S1 v6 t# F' F% t
                end7 H0 F' v' @2 Q2 L2 j6 a7 s
                & y8 M% r, ^  g2 L+ X1 I
        endtask
: Y) T4 e3 ?7 Q: d
' U! o4 A3 V# k& d  a: {# `& m. T; t        //系统运行任务- N8 e7 @0 x# T  p
        task system_run_task();' [% t/ s6 Y% I: w( D! w" o, J
                begin
2 Q. h: J) A- ~; r                                case(system_run_task_state)
3 v; }* S' P& s                                . [5 F: R0 M' H# {/ J0 H
                                        8'd0:                        //初始化
7 a4 T  d7 ]& U! N& e                                                begin9 t0 T$ }4 H7 K; H

! F; E! T& h. [: P5 \                                                                time_count <= 0;/ P8 s1 f; x# _5 l: C
                                                                time_ones <= 0;! v4 g( X! N+ O3 E+ _. m8 v
                                                                2 _, ~$ I8 ^( h
                                                                pdh_ok_count <= 8'd0;
# }! Q! U! v* ~7 n5 Y" h                                                                pdh_ok_count_N <= 8'd3;2 q( ]% {' N2 F% R% g* ~1 [% Y- q
                                                               
$ E, m9 D- d% e                                                                pdh_time <= pdh_time_INIT;
0 d6 U8 h* g1 T1 d, N3 S% i# z% _+ K- d! }8 i( u: W; l
                                                                pdh_ok_delay_flag <= END;8 J  Q. f& K; n5 }8 M3 |: H
                                                               
* p  j3 i; C4 e% o6 F/ C* j; R$ X                                                                locked_fail_count <= 8'd0;        //锁定失败计数4 s. {4 A. _4 E
                                                               
( L7 s7 F0 g: e# t                                                                analog_switch_1 <= OFF;
" |& @8 e, d: \6 N                                                                analog_switch_2 <= OFF;
; r6 ?4 l  b' J) J4 C: G% q/ ?/ A                                                                sawtooth_control <= OFF;        9 f  r. z0 F4 ]6 f; N; m0 E6 i2 Z9 G
                                                                % J9 R) K# f# b: a8 j0 `
                                                                system_run_task_state <= 8'd1;* `' h4 T; Q* d9 e. r9 l4 s$ E* H

3 E# g* v- ]7 b6 G/ H. f2 @                                                end4 n8 Q) L4 V3 p3 [4 b
        1 p& ?% r9 P" O
                                        8'd1:
' Z" a5 Q6 a3 v- x                                                begin1 C/ ^1 j& n. \$ G/ V  }/ z
                                                        //init i = 0- B' i# @0 L' s0 l+ D( p
                                                        dac_to_temperature_i <= dac_to_temperature_spare;" r7 f2 V: G- b, Z
                                                        N <= init_N;
* V* x9 F+ a" f8 ?* [                                                        K        <= init_K;                , W: Y3 ^) l1 y6 `
                                                        DIR <= init_DIR;        //init 扫描方向                                                        , S2 I* h/ K. G' _5 Q4 v' A+ v
                                                        
/ \- @1 `1 t% c- @6 E- Z                                                        system_run_task_state <= 8'd2;% j& n2 ^" ]* R1 e% H  F  Q
                                                        & d/ C9 R3 v) v5 C% X
                                                end
5 G1 ]5 U8 l/ \3 M                                                5 w' A/ H! c, h' L& N, L5 a; s2 }
                                        8'd2:+ `$ r2 \' i4 n! c
                                                begin' o4 d! y! E* n! r( x8 B0 c: U! {
                                                        //start pzt scanning
- O# \1 P& ^/ w, m7 j, j1 G                                                        analog_switch_1 <= OFF;
" C6 a1 E/ }  K9 e4 @8 ]% K1 ~                                                        analog_switch_2 <= ON;
% q+ N8 `4 f: D& L7 h: F8 w+ @                                                        
. B# k! B. K2 X2 N/ a: G                                                        //开启锯齿波扫描4 _7 m9 g) I4 |& W, i+ G
                                                        sawtooth_control <= ON;        * M, I8 y# i6 h5 X8 c9 R( a
                                                        
: }4 K) K5 k0 q9 X$ X                                                        //T(i) = V * step * i;& ?  ^  [6 V2 F# f
                                                        dac_ch1 <= dac_to_temperature_i;
" Y, U! @8 [# ]) B( j  Q                                                        time_count <= 0;' Z7 f/ B0 }, l0 A) R3 Z" s9 M
                                                        time_ones <= 0;
* y- S: |, Q6 p0 L5 G( O! ?                                                        system_run_task_state <= 8'd3;$ Q5 A; o6 m" g/ s" ]- }1 _
                                                end3 A; z2 s5 ^0 d: I
                                        * E$ x$ D: e1 S1 `5 U8 }0 Q
                                        8'd3:/ p- f% J) O$ r  G, T3 H7 P5 _
                                                begin. b6 s4 g' b1 @6 [/ l7 }% g8 `
                                                        //wait 4 - 10s& `, }0 C( X+ C3 F9 P  O5 G" X' C% N
                                                        if(time_count == T1S)        //1s
4 T8 g3 M/ Q/ F) @                                                                begin
0 c8 z0 s& o$ h* Y5 k                                                                        time_ones <= time_ones + 1'b1;
& q8 H6 x' c- o                                                                        
  I$ h# Q6 \! C% H4 \6 d. k                                                                        if(time_ones == T2S)                //2s
: b+ J7 ?: L4 I9 U& w; }0 W# ~1 ~                                                                                begin
# {' Z+ ~, y* m) k5 G$ `5 N5 Z                                                                                        search_mode();        //扫描模式+ o' R! m! H9 B
                                                                                        dac_ch1 <= dac_to_temperature_i;        //更新数据
2 c$ v7 b0 }* X3 e                                                                                        time_ones <= 0;
$ \4 y5 S6 m0 x3 i9 _                                                                                end        
7 Y9 N4 J" d0 s( }                                                                                ; Z6 J; Z! }* Y0 W& H9 I. l& @9 A+ |) |
                                                                        time_count <= 0;9 T+ y0 C5 s' K4 S  l
                                                                end  v7 [; D2 x7 I  D/ _
                                                        else
- n! c0 k6 T  k* m8 P- z/ O                                                                begin/ T7 G  _* @3 r
                                                                        time_count <= time_count + 1'b1;
$ _6 U7 `! C' M% @" D3 p                                                                        
5 {0 s$ U( ~. R" `1 Y, P. z' n                                                                        //PDH OK?                        //判断是否找到信号
. d' K. K  v; l                                                                        if(pdh_ok == LOCK)& a8 _6 P( T6 j8 z7 o; F, y
                                                                                        begin6 t: x. |+ w  l, S
                                                                                                pdh_ok_count <= pdh_ok_count + 1'b1;1 n" r; v8 C7 ]  t( L
                                                                                                pdh_ok_delay_flag <= START;        //开始延时% Y7 j! T1 v7 ?; k  y3 \
                                                                                                time_count <= 0;
; r/ G/ F) S4 _  N. o                                                                                                time_ones <= 0;4 }! @* C9 k$ y1 M
                                                                                                pdh_time_count <= 0;
. Z. m) C* O! o7 ~                                                                                                system_run_task_state <= 8'd4;! C5 W& h, s: t" F; K: f7 p' m6 w' S
                                                                                        end2 w# {9 N, b; r2 d7 K
                                                                end/ O8 G* s2 @, e8 e& V
                                                end
# w4 W, ^# F  G% z( y                                                
) B% J! N2 a5 S
. r' G, Y+ {$ W8 j( @" T                                        8'd4:        //PDH OK Yes
2 v* j) Z1 t* Z: v7 C                                                begin
, Q" q6 Q6 a" L& l) r                                                
9 F6 N' R3 i6 Z- N" {! G                                                        //锯齿波扫描延长2S! T* I9 P3 N0 e5 o/ J2 W& m. y, }! Z
                                                        if(time_count == T1S)        //1s' @  `, e. s  X- O; Q
                                                                begin( e6 O& k2 q8 i& r
                                                                        time_ones <= time_ones + 1'b1;/ b7 I7 b5 K$ Q  \: G# E1 `
                                                                        3 H4 T+ L0 m$ @* `4 D( l
                                                                                if(time_ones == T2S)        //2s) F7 R( @7 [. `; g" Q8 `( e
                                                                                        begin
! {0 r: O) ~/ s1 N1 T                                                                                                
5 M0 S0 H* D. p7 t8 x2 j( P# ~8 o& f                                                                                                if(pdh_ok_count >= pdh_ok_count_N )        //真信号* G4 r" I, y5 S2 h6 o  Y
                                                                                                                begin  V2 |) _; D1 o; H7 e0 y
                                                                                                                        //pdh_ok_count <= 8'd0;
; |: w! X/ O2 ^0 ^" d                                                                                                                        pdh_time_count <= 0;
' X  [% l1 q! k: Z                                                                                                                        system_run_task_state <= 8'd5;        //搜索到pdh
1 \7 U( O' `1 c+ `1 P' z                                                                                                                end
$ z. l- m) t$ M! c8 M) l8 g6 l                                                                                                else
" j: {0 v" h8 D/ E                                                                                                                begin6 E  @- F* M; z# |4 G# }6 @
                                                                                                                        system_run_task_state <= 8'd3;        //重新扫描. j6 O2 ]/ z  h
                                                                                                                        pdh_ok_count <= 8'd0;3 p& y/ m' D. L* h4 ~5 z
                                                                                                                end! I7 J2 Q! o& Q( V; O7 c
                                                                                                                . t) v1 j; y: g. x+ q  [6 A" O
                                                                                                time_ones <= 0;
4 v- l! ?+ A  ^# w( {+ j! i                                                                                        end        " H9 j- o2 A0 G" {; R4 }/ i8 _
                                                                        8 [' Q8 _( }; z8 z9 Z4 [3 z: O( `# Q
                                                                        time_count <= 32'd0;
! C# A+ x4 J: N% @9 `: Y                                                                end  K, ~& r% c4 f9 h' |. G
                                                        else
9 E9 ?" a  R8 Y* d* g2 c& b2 N9 _$ f3 y                                                                begin& l2 T, e& L. D" q% {8 |% \
                                                                        time_count <= time_count + 1'b1;
+ i$ S' A9 o$ I  ~                                                                        % y/ o% H4 h) ]
                                                                        //pdh误触发处理$ p8 }3 U/ J" M
                                                                        //开始延时# L$ d! N* P6 n) ]. n9 |2 b) T& x
                                                                        if(pdh_ok_delay_flag == START)
- _; n, ?) Z( D" f  a                                                                                begin
" C, L& \4 r% O+ {3 M' h0 G                                                                                        if(pdh_time_count == pdh_time )        //ms
% c' t1 w& F% J                                                                                                begin
0 \& ~- ?6 I4 h                                                                                                        pdh_time_count <= 32'd0;        * K" _; P4 i  H9 i. \2 V9 m) u
                                                                                                        pdh_ok_delay_flag <= END;
$ K3 y- `3 S! F$ E                                                                                                end. a3 A$ w5 ]' t" T' p- o
                                                                                        else
; i0 p9 a" B+ o5 I- \- w/ _4 r. {                                                                                                        pdh_time_count <= pdh_time_count + 1'b1;; x' {* b" O0 V7 k
                                                                                end  e: n: _0 P1 C; L# t
                                                                        else
% B& s5 c# F, r                                                                                begin% ^; t0 `5 [  q  R  J
                                                                                        if(pdh_ok == LOCK)
. K- U7 ?" M+ k, D; t                                                                                                begin* Y: R0 Z8 b1 ~, X( y! ^0 g# d6 s
                                                                                                        pdh_ok_count <= pdh_ok_count + 1'b1;
8 H4 b. {  Z- n                                                                                                        pdh_ok_delay_flag <= START;                                                                        
6 r8 P/ g& m1 N% C3 y2 o! z                                                                                                end+ j0 `; I% S- F$ A5 h
                                                                                end
$ J  R- _8 W. l/ \+ l4 p                                                                        end
7 x. d. P% g% g) i. q8 j                                                end
2 M( I# l! C/ s- P, A* u: `, Z                                        7 i2 z; a* Q7 c2 Q+ h
                                        8'd5://search pdh ok
3 W9 a, H6 x8 W                                                begin* W* Z7 g! J) r& A; M8 U
                                                
: d. W6 H9 D- R1 m# |% j
# l- C; M( a4 ~8 q3 I( X4 U                                                        //stop pzt scanning
9 Z9 ^3 u+ I5 W) Z; E, T9 f                                                        analog_switch_2 <= OFF;
6 @. u& Q! \3 k                                                        //analog_switch_1 <= ON;
$ E5 ^! T! {6 l* ^6 A& s8 f4 x8 u                                                        sawtooth_control <= OFF;
8 t3 k  D3 P, ~2 b                                                        
5 n; ]3 ?+ g' ?4 g1 y$ x9 k                                                        /*7 K; D9 V& D2 V9 G
                                                        //100MS等待
  Y, ~( F* ~& f$ M9 v- _9 Z4 y                                                        if(time_count == T100MS)        //1s* w/ V) u! R$ \5 P3 C5 U7 [! X, r
                                                                begin- ?+ g1 b) r0 V. N0 l8 n
                                                                        system_run_task_state <= 8'd8;! w/ s$ o9 @+ }) h. ^* E! `
                                                                        time_count <= 32'd0;
# l. h/ J, R. O' ?                                                                end7 q$ Q' s/ P' D5 E* s6 {) {) o
                                                        else
) w5 ~3 |+ K" p2 f: r" u                                                                        time_count <= time_count + 1'b1;0 E% l' A, M/ \# y7 w
                                                        : W1 \' V2 s. ^( Q, }: x, m
                                                        */                                                        / Y1 L1 P% M7 v2 \! ?
                                                end4 ^% k0 J( ]4 F$ C' O$ C- h) ]
                                       
/ X8 ^7 ?! ?) ^1 V                                        /*
/ ~- t/ i% L, w6 @3 c* X3 i                                        8'd8:
# P9 h2 P  ~$ c8 m' {                                                begin
) w; _! r6 M) x' |2 ^% p$ o: T9 K* {                                                
; @( ]# j3 z$ v, Q) b                                                        //锁入过程
( E) U; t. a1 z, r- n  r                                                        //analog_switch_2 <= OFF;  v. H; \# b3 Q6 S  O: h1 N
                                                        analog_switch_1 <= ON;6 I$ ]+ Q5 y5 ?
                                                
# v! L- P' Q9 _1 c) T& `                                                        //2S判断一次7 q% M- }- I- j. q5 s& C9 r  p
                                                        if(time_count == T1S)        //1s% O& o8 u% [& q/ n3 [8 \, I
                                                                begin
' Z. p) E5 [( S, T0 Z. J/ t                                                                        time_ones <= time_ones + 1'b1;
. Q6 I8 [, e9 D& ^                                                                        time_count <= 32'd0;
/ Y* @7 Q; t5 L$ _! P# ?( {. B                                                                end
" Q' z- h2 g; [+ u1 a                                                        else
) ]9 L- [+ p3 Z0 e                                                                        time_count <= time_count + 1'b1;8 f$ r& ^! B2 j2 @3 @* P7 _3 {8 D
                                                                        
& a4 x2 S( V' T0 s# k                                                        if(time_ones == T2S)        //2s
. L. e- z9 K1 I: i                                                                begin" M% e3 G% S: _% q; Z) f
                                                               
# e/ \) w; H4 j; |: A                                                                                if(locked == LOCK)                                                        . f- C& ~6 X! [  a6 A" _4 J, [! E
                                                                                                system_run_task_state <= 8'd11; //已锁定. C8 ]3 M( W0 E( V! R% I  W
                                                                                else
6 F" t/ ]2 v$ i# O" r% o5 U( g. J                                                                                                system_run_task_state <= 8'd9;        //未锁定
# f( l+ f. w* z                                                                                       
- ]7 {4 U, E# d. [                                                                        time_ones <= 0;, I8 U) ~5 J# q, x) D' a
                                                                end4 ^1 M0 _+ q* \* g: q9 V. O4 o7 Q5 r5 Z
% N; N- R  m, y8 p1 }7 c$ N
                                                end
8 @& B$ ?' {$ P* F" ]                                       
- |. [8 w6 y& \5 n8 c  ^' K+ Y- ^5 H
                                        8'd9:        //锁入失败
8 U+ O3 l+ j9 z& j                                                begin
' q* b% |7 \. }/ P& i                                                        
* t( R  o8 h. o% {6 Z9 R1 D0 Z, }                                                                //锁定失败计数 & e( t! y1 R0 {: x% Y5 k
                                                                locked_fail_count <= locked_fail_count + 1'b1;/ s5 s, z9 D/ z2 O! d) }% y
                                                               
5 s& E' h" g+ T8 P  r                                                                if(locked_fail_count < 8'd5)        " u' U! w5 v# M$ ~! j
                                                                        begin7 J8 b  q6 |! b5 {9 J
                                                                                system_run_task_state <= 10;- Y' Z5 G; c, F* P$ s7 D5 h/ a" k" l
                                                                        end
# v7 u( J" P9 j" t3 ^3 H7 B9 v" R                                                                else
" Z/ D6 P. g: ^& y4 k, i5 Q4 J+ a                                                                        begin
; I: z9 V. ?& ^8 V                                                                                if(dac_to_temperature_i > 14'd0), Y6 y4 c; z" C" H, \4 K3 T
                                                                                        dac_to_temperature_i <= dac_to_temperature_i - 1'b1;
. A1 G! z, T$ E$ t( e5 p- l                                                                        
* q+ ~* ]+ Z# Q& M5 a0 ~' _                                                                                analog_switch_1 <= OFF;+ l2 l5 g" ?" X' d2 _2 a
                                                                                analog_switch_2 <= ON;        ; ^4 p6 Z' u! B% U  z
                                                                                
6 W* d0 m. H; h1 @, @" D" |                                                                                locked_fail_count <= 8'd0;# ^0 w6 d/ O) c+ h: T
                                                                                
( r# ^  x$ P9 Z9 K7 l: o2 y& ^# f                                                                                system_run_task_state <= 3;
) I& t, Q/ [9 Q4 P( S
! k  }: g; m# N  f9 D5 O5 R  L                                                                        end8 v, x) ~% W# a8 e" @6 Z+ |! B( i

; i) M/ q/ P8 s                                                end2 b1 w" R7 h2 L& C

, e8 F! ?9 z9 C9 X: y8 [                                        8'd10:' K0 Q9 U. R$ ?6 h$ R+ K
                                                begin1 A; s1 j: p5 U2 y! i
                                                
7 n; {. `0 c+ n1 ?! x                                                        analog_switch_1 <= OFF;
7 u$ |1 r, O  m+ h# A                                                
, ^' j. C; f; \4 u3 f# w                                                        //2S判断一次( [4 B7 y$ o8 ?4 Z: a
                                                        if(time_count == T1S)        //1s6 y4 n1 ?! y  t( F5 F* r4 O+ l0 c
                                                                begin
: R; W4 S" T& j4 X2 u; `2 P                                                                        time_ones <= time_ones + 1'b1;
$ \' U7 y0 w- i! {% I, k/ _( n                                                                        time_count <= 32'd0;
8 h* q- |6 H1 ?, Z  Y/ Q                                                                end
5 w% V  G3 W1 T# v  ~5 h                                                        else
1 s! Z/ k/ t1 ?* E6 {- I4 F                                                                        time_count <= time_count + 1'b1;
, M" a  {' k5 t9 {0 A  V                                                                        
% ]/ C" |" k$ V( A! N9 x                                                        if(time_ones == T2S)        //2s; z: u$ t2 A( f9 h6 E+ h
                                                                begin
4 P, H: x3 b, S4 _8 o0 r# Y                                                                        system_run_task_state <= 8;
5 _/ D$ k- q4 w; Y8 B                                                                        time_ones <= 0;: H9 \4 s9 V! y! S. W) U. L0 x
                                                                end
+ c3 Y7 b. z" [+ E1 ~: t- e                                                               
  v3 ?. Z( P  M* G: S                                                end% J( U3 A! Y$ t* }
                                        8 ]( K* `5 U6 u2 m7 A) c0 ?/ z
0 {7 p, |6 C: D* q; z# ~# H' l
                                                
8 }  U4 b( t& A                                        //锁定状态下的运行
8 p# W$ j6 B8 B; |/ F3 J5 ?) u3 H2 L                                        8'd11:7 q) \! i" j9 ]) H6 K
                                                begin
8 |0 d+ y# z& W& ?6 u
2 T) F% J3 Z: i9 s: Z+ e2 B6 o                                                        //5S判断一次
3 t( a/ w0 J% g- @  P; ~1 ~4 l/ s                                                        if(time_count == T1S)        //1s+ Y" N6 B9 u, _$ @: T/ H4 V
                                                                begin
8 i* \6 l! L% S, n3 F$ v                                                                        time_ones <= time_ones + 1'b1;
/ T( K( [- @" W+ i                                                                        time_count <= 32'd0;8 x6 ]) X. b, P" }6 F
                                                                end, u! n0 ^9 r) ]7 f
                                                        else% Z: ?7 l- q8 A# O6 j# E' V9 C
                                                                        time_count <= time_count + 1'b1;
! y% x+ Q/ z* s9 z                                                                        7 ^8 K7 Z2 P5 u
                                                        if(time_ones == T5S)        //5s
- f) v0 L0 v: s/ f: M; @$ T; d  T                                                                begin
5 }9 ~+ v8 {* e3 A  @: f+ q                                                                % r  D9 v& L' J* t: R4 F+ U
                                                                        //电压 > 1 并且 处于锁定状态
- d5 ~& Y# o8 O9 Y8 b$ V                                                                        if(adc_ch1_data > 16'sd6553 && dac_to_temperature_i < 14'd16383 && locked == LOCK)1 F* |6 D9 S& S
                                                                                begin6 |2 M' D( D5 B! s) t4 a- y  X* B
                                                                                        dac_to_temperature_i <= dac_to_temperature_i - 1;2 a( E2 f  b9 D; W
                                                                                end                " c( j% ~2 ?1 C7 ~+ u
                                                                        else if(adc_ch1_data < -16'sd6553 && dac_to_temperature_i > 14'd0 && locked == LOCK)
8 @, T* i5 p4 j0 J, W                                                                                begin
3 U" ]* R# ]0 S+ W/ d& q$ m; b                                                                                        dac_to_temperature_i <= dac_to_temperature_i + 1;
6 M, w' k) j# N  ^- m                                                                                end                ! m. `2 b0 k3 z1 l4 [
                                                                                * h$ @! A& q4 Z, M% @
                                                                        //T(i) = V * step * i;: W$ ^5 s5 C9 o: u$ S
                                                                        dac_ch1 <= dac_to_temperature_i;        8 ~1 \$ m! R  T, i2 Q5 ^9 v9 [7 `0 W
                9 V0 |" i4 E% e3 g
                                                                        time_ones <= 0;+ h' T3 {! @* w% L3 \6 B
                                                                        ' o' g  ~9 P" j- z" J) G$ ?. t) w
                                                                end; s+ U5 Y; W! x% F! ?
                                                        
8 D; l, p, ~2 }9 G5 l1 f0 s8 g                                                        
; }# J5 s" Z! W                                                        if(locked == UNLOCK)        //unlock+ |2 H2 Q; y( i0 K3 w
                                                                begin
- w7 l/ ^+ I4 ~" a* ^                                                                        
. g2 L, n! V/ L# t3 T& f, |/ X# T                                                                        
  Z" ]0 @* `2 Z$ [2 R- I# m* P& Y                                                                        dac_to_temperature_spare <= dac_to_temperature_i;        //记录失锁值 从新扫描时从此值开始
  R2 c$ R3 u2 d4 |                                                                        time_count <= 0;4 R3 f; F2 z2 Y3 V
                                                                        time_ones  <= 0;
6 h7 e9 L" c- t4 [8 |7 U                                                                        system_run_task_state <= 8'd2;  //重新进入扫描模式
4 E& a4 ^! E  M: O! Z4 F1 K7 g                                                                        8 K/ I0 V( u: x
                                                                end
9 \* n( h# \2 @; R$ r                                                end
! t- r: ^+ G* m3 f                                                */
( T3 R6 R/ `9 w+ V                                                8 [* E# U  h. y1 F+ O7 Q, C
                                                default:
' W6 \8 ~1 l: k7 R6 e1 z3 J                                                                system_run_task_state <= 8'd0;
* V2 [; Q6 U9 q9 J                                endcase+ f; {$ E$ L; F
                end        
8 Y' r3 H  j! z$ p: P4 v+ M% j               
/ w8 e* q  B  U* ^! J$ Q7 q        endtask
0 `1 n0 F1 @0 g* n        
& _/ a& M3 _  u' n$ f& U8 P& h$ O  n1 ^
- G& R- [2 D3 @& k! c* B
// 扫描模式
/ P) P6 s  d: V% X0 ctask search_mode;
! n' g+ u6 `. n  I6 J                begin
8 t1 \2 I/ _( ~* J) K+ ]                                //切换扫描方向- t! a& c* J6 f5 w$ U' d
                                if(DIR == 4'd1)
# m8 |5 G8 W' E+ _                                                begin
! ?5 U; v$ Z! `2 D                                                
- z8 `4 r- A' V. X% ~4 d                                                        if(dac_to_temperature_i <  (dac_to_temperature_spare + N))        
! s. h8 t- v0 ]3 ^                                                                        begin # S5 t. v' O8 [# _  S
                                                                                dac_to_temperature_i <= dac_to_temperature_i + 1'b1;
# A+ B3 Y8 I, p' ?                                                                        end- t. g! y! p6 }7 N8 o! w9 x9 N  g% a
                                                        else
0 T8 Z# W' t1 d2 R% a3 p3 O/ d                                                                        begin* w8 A8 a3 W( B
                                                                                DIR <= DIR + 1'b1;( n0 y7 X; C; F0 f- G4 E
                                                                        end
9 d; N) }  X5 y3 j7 A& s                                                ! J, _' w) s1 ]" Y% f- s& A
                                                end
6 o: s6 M- R1 S                                else if(DIR == 4'd2)
8 r4 ?, B  a0 @) K; m4 q) _; g' {                                                begin
2 K3 w) D0 H% `  R% a! w# t; ?2 ~                                                
- T( R$ c: }# ]0 ]+ _- ]; S                                                        if(dac_to_temperature_i >  (dac_to_temperature_spare - N))        
2 ^) _, D5 l1 _3 m( g; p                                                                        begin 2 K; m0 F6 }) o8 [" [& |+ c
                                                                                dac_to_temperature_i <= dac_to_temperature_i - 1'b1;) A/ h( C2 {9 g+ o( ]2 a
                                                                        end
' _, y+ O$ h& i4 C: F9 N# E                                                        else
, P6 ]4 S2 K0 Z- T3 _                                                                        begin
# O" s) u& H) l- l+ q: r- ]& q& f7 M                                                                                DIR <= DIR + 1'b1;
) V: I9 K, `1 q' L                                                                        end
1 ]/ c" ?* h$ R                                                                        + b6 j# S2 K9 j+ j6 e
                                                end% F% ?+ ], e1 f9 E9 h
                                else if(DIR >= 4'd3)+ s5 _- W8 U4 M9 G+ e- E
                                                begin: s9 M$ W! p6 Q6 w% X1 J
                                                
0 ]( m4 f1 S( F+ o; H" U6 k1 f9 Q                                                        //扩大扫描范围
  s" \, O/ m/ c6 ~! J$ Z5 @                                                        if(((dac_to_temperature_spare + (K * N)) < 14'd16383) && ((dac_to_temperature_spare - (K * N)) > 14'd0))2 m; F! w1 [5 q; V; G' `
                                                                begin0 k& p' b: P& E9 o+ z3 R
                                                                        N <= (K * N);! {" ?0 g: O, q$ q# O
                                                                        DIR <= init_DIR;8 I4 Z4 V8 f, `' P5 }+ Y
                                                                end
3 V8 g7 w) Y: S8 z/ e+ a- m                                                        else
; Q* m3 r2 J; G$ U8 N! N) b                                                                begin
( U7 R* K& }+ M% _$ r                                                                        dac_to_temperature_spare <= 14'd8192;        //0V
4 ]  W% o; o: e2 G/ d                                                                        system_run_task_state <= 8'd2;        //超出范围重新扫描
: Q' u! c# B; P) [9 v                                                                , L, ?% f  M5 e
                                                                end
/ {* L" y) o: q+ [8 X/ g* `8 Y                                                end
+ h' U+ ^) C. }5 H- P2 E# l0 d( h2 ?% b: ?8 R/ H* v0 w- b
                        end- }' v! N! ?+ Q8 ]/ B4 b9 z
endtask
3 L; Z' ^5 k3 U% E7 W, u. {
% |: N9 v. l( Q8 rendmodule
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-10 08:35 , Processed in 0.203125 second(s), 23 queries , Gzip On.

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

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

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