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

verilog 怎么写一个串口能够一次性发送多个字节

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-11-23 20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
如题 我最近写了一个比较简单的verilog串口 但一次性只能发送8位数据  (通过串口调试助手发送),如果我发送16位数据,后8位就会产生乱码  求高人指点  代码如下:系统50M时钟 波特率 115200
, D6 o! v/ @! f% K; \2 U3 p接受模块:
( A/ c5 ]# i  j: Qmodule uartrx(clk,rx,dataout0,rdsig,dataerror,frameerror);9 L; H& ?7 L( s6 P

' v) c4 ^4 [2 `1 T% C& Tinput clk;
" @" U7 y- _% _9 tinput rx;
  S! Q3 D- I" Y. n" L  k3 L% Z6 n# F# joutput dataout0;) \1 P/ d' Q( a7 C4 u7 q+ p
output rdsig;
, O4 D) r9 o- ]1 Z! _) }output dataerror;6 e( K5 t/ D+ j: s5 j
output frameerror;0 i  Z2 o+ F% @! T# {
7 M2 r7 T) `7 g' Y6 n  e
reg[7:0] dataout0;
8 W# U  g5 K( R2 w& \+ Sreg rdsig,dataerror;
5 x2 h5 A! x' I' lreg frameerror;
1 x+ W# }* x2 e4 ]% C/ H; G1 [: b2 e7 Q6 l
reg [7:0] cnt;
' L' Y9 k  G' M: I" preg rxbuf,rxfall,receive;
/ Z. ^) P; ^6 k% L, f5 E5 b* [
6 s1 R. G3 L" Z5 k' v/ |' q1 I( nparameter paritymode = 1'b0;
1 T( {" z0 e8 _3 U6 u( Greg presult,idle;$ M# r& J3 `8 ?: @/ c
: N8 ^0 {& @9 Q9 }8 f3 f+ p- _
always @(posedge clk)! _1 [# d2 w' Y9 k7 V. X% ~
begin- w% ~- A- L+ z! V* w
rxbuf<=rx;
, E) ^2 ~$ M1 @: W3 l7 x' \4 v( F# grxfall<=rxbuf & (~rx);
. I# ~) B6 B% {$ nend6 F6 A  J# |' o( H: V  j% w

" z1 ]* C' s  ]* x' U2 u, S# malways @(posedge clk)
& B  g7 f" g6 S5 A* f7 abegin
/ V1 |. c7 P" m0 S& l! H. d7 N3 z( u* Fif(rxfall && (~idle))
5 o" S+ @5 d2 t) \! q% I1 S/ u! Ybegin
, B9 u; i* R, d" Sreceive <= 1'b1;( J; w/ q  N0 s7 m: U2 `. X! M
end
8 h8 w) n* O  e2 P1 Oelse if(cnt == 8'd159)
5 c! m1 j; N! |' w* j* _/ vbegin
$ e8 M, `; P. [receive <= 1'b0;, V% P& g: W5 q7 O9 L
end6 \: D5 ^) @% p% N
end4 n2 j% p! m# Y2 J  S
8 R6 J5 w" ]9 F& S: ?# s
always @(posedge clk)
% G# [: U% @  i+ dbegin 5 i. ]2 {) Z8 O' s# i; f: _
if(receive == 1'b1)
4 U' U/ O  t) o8 l6 n6 Mbegin
7 R4 d+ t2 _: I8 Rcase(cnt)
" Y2 {2 O' t/ i& C* u8'd0:* B* ]: _5 F- J' r4 ^/ `
begin
$ U2 Y- a3 s1 Y7 e8 J5 f+ {idle <= 1'b1;
' m% S3 Q# P; W9 `cnt <= cnt+8'd1;7 [1 K' b2 f! H: O( ^
rdsig <= 1'b0;5 i: o* I* {5 }6 K* q! U9 [* @
end
/ M( y, A; S' ~- {7 c, {8'd24:. a- o* E! {% I+ w
begin
8 l, u( i( b/ Y, nidle <= 1'b1;
* h. M0 W9 S" k! v* V8 v3 `dataout0[0] <= rx;8 D+ V+ b" F1 m# D8 v- N
//presult <= paritymode^rx;6 l  F# h; _" G9 J- V( [% Q1 l
cnt <= cnt + 8'd1;
+ j2 ^' B8 c% f/ W6 @5 t  i1 s, xrdsig <= 1'b0;5 m3 Z/ k2 J9 @; v2 B9 {$ {6 B/ j
end
& H6 F% S- ]) s5 b8'd40:
- C8 K& a  T0 D! L$ O$ C0 b  Ebegin
* j2 L8 _* J9 G3 gidle <= 1'b1;
: n1 m; T; |, [7 h8 z2 a( O" Q7 a' F! M4 Rdataout0[1] <= rx;. o& A$ O" }! D% t8 ?
//presult <= presult^rx;, b/ k3 C8 T. L3 [& T8 a
cnt <= cnt + 8'd1;5 w+ d. P6 {6 A
rdsig <= 1'b0;! Y9 L2 [" p+ d7 c
end4 m8 W5 R! u) c4 N( k! |7 Q3 i
8'd56:
9 F7 F& F# t/ y- S6 n- Xbegin
, E0 ]# Q( Y6 V# didle <= 1'b1;; H. W6 R( j0 C0 i' J* [$ Y2 i
dataout0[2] <= rx;: ~( p, n1 {: O" z9 p
//presult <= presult^rx;
! E+ h7 b6 T1 }: a1 |& ^: qcnt <= cnt + 8'd1;
3 J6 P7 v4 X7 S3 A& \. @( b# \rdsig <= 1'b0;
5 u/ |) J4 u4 x- I4 lend
" C0 \9 v6 d& `/ U' |8'd72:
7 a/ |1 ]* N4 X/ s0 k  E0 ibegin
& {1 @1 M. [8 bidle <= 1'b1;
! a5 F, B  q8 bdataout0[3] <= rx;/ Q+ B4 i, e8 @2 T
//presult <= presult^rx;5 ]% e# ~0 `% P/ b# D
cnt <= cnt + 8'd1;
- @0 Y- q( W) wrdsig <= 1'b0;
/ g, I0 _- P# l+ L* X2 B- L. iend. F/ }7 p0 P8 x' S: l
8'd88:7 I4 b% H* ?4 i) i( r$ }
begin
, a7 z: ^, Z/ U0 B7 {& q( Midle <= 1'b1;, q! C2 r5 }3 d: d1 x
dataout0[4] <= rx;2 M2 r5 l6 O  `
//presult <= presult^rx;
/ ~' c" }# q, S3 c; Ncnt <= cnt + 8'd1;! R) Q' C3 v7 ]2 J; C  B
rdsig <= 1'b0;2 Z7 L) p$ P: |* N0 \+ S
end
0 |& g" g2 k  O6 n. ^' `: y7 I2 C8'd104:
3 C% ?* W) C0 p# p3 l9 Fbegin
; a( Q. G$ \2 s) J, S$ didle <= 1'b1;
2 }6 V+ T9 J7 K5 ]/ t, bdataout0[5] <= rx;
0 K! ^+ I. \- m# [: P9 k//presult <= presult^rx;
" e6 T! j1 Q8 l' u& ucnt <= cnt + 8'd1;4 J# s$ W, i; \7 ~! w* N. ^
rdsig <= 1'b0;" u: k2 T( P! J' w# F, `) o
end( p5 A$ r* X2 X2 r  e6 ^
8'd120:0 o1 J- Z. C  H
begin& m) K, G1 D2 s
idle <= 1'b1;4 a; E1 E: L3 ?' @2 \
dataout0[6] <= rx;
; V1 F4 N7 L. O# }$ A//presult <= presult^rx;9 e, }$ j) ^2 |# Q8 v  g4 f* J0 x+ h1 q
cnt <= cnt + 8'd1;7 r. c& d6 m% C  @& {
rdsig <= 1'b0;% w" o/ b8 g) p0 ~! W4 u: V1 b& E
end
' {. n" X1 G* w. g5 J$ D( @8'd136:" m+ X$ e8 Y  d$ ?% e# i
begin( ^+ G' r# g; }# ?
idle <= 1'b1;
  ?# Y" \- ^' P. a5 ydataout0[7] <= rx;
8 h9 b6 r6 E, X//presult <= presult^dataout0[7];# d3 a/ \1 F5 D: @0 x% n5 a
cnt <= cnt + 8'd1;2 E3 s/ G* S6 Z! Y
rdsig <= 1'b0;
. w& |, j0 c0 Z/ }+ dend5 K; p2 Q: J2 i3 Y" R
/*8'd152:
. X0 Y) A% s+ xbegin
  l& E. F  k8 `" A6 U% H" pidle <= 1'b1;% w6 }: [5 D: c  ?7 d) P5 P* e
if(presult == rx); w' j& y, M  @, V4 X' H
dataerror <= 1'b0;7 K6 s' @3 g: @4 g, @# N

, r. \: [9 P9 Q1 Nelse
' W) x9 a; J+ `/ K' ]5 R( U
6 ^* ~& ]$ X+ d; U9 @6 t" |dataerror <= 1'b1;' V! C4 N; X' P" y' ]

5 h! X0 G; D+ P( u% Q5 W. Zcnt <= cnt +8'd1;2 B$ N, h+ u: B" x1 Q, T7 f( O
rdsig <= 1'b1;$ i! V5 Z+ Y- H3 |; ~- B; L
end
5 I5 e5 W8 M6 n( G% G6 l" {& D*/% x3 h. e; I" |) B7 g6 v* v6 ^
8'd152:
9 f8 M/ r$ r. Ibegin
3 n- b8 }' n* B. r1 [" _7 ~3 a( ?idle <= 1'b1;
: h) c) y$ \7 S6 vif(1'b1==rx)
; W+ Q6 O, l* u7 h) o! d; Gframeerror <= 1'b0;
: p. L: ~6 Z3 _9 x6 J: a% telse
4 e: ]4 ^' j( @- b2 Aframeerror <= 1'b1;
! B6 x. ?0 i7 ~
! E1 X& V6 |3 S; Bcnt <= cnt + 8'd1;9 b% Y2 u$ z( ?7 z2 a
rdsig <= 1'b1;
% r8 u* T3 [, Q6 D6 l! Send
7 |! c* z0 I# U. x$ Sdefault:
7 v0 K+ `  H7 p1 J, v: E3 Wbegin% d% n& }+ ~. `4 G
  cnt <= cnt + 8'd1;+ c( h# Z' u; s
  end
- ]6 h  C. }4 c/ v" d) E1 mendcase
9 d# |) w7 p( g; t6 W9 d end * J* n/ H  @7 Z/ Z7 i6 p
7 M# s1 e9 w. O' G
else
4 x3 ^+ a5 T* c/ F  begin
5 l% F- p0 I1 C9 c. n4 R  cnt <= 8'd0;6 ?7 x  V- y! }, J
  idle <= 1'b0;
6 D+ q; V( t/ v3 ]  rdsig <= 1'b0;
% `* Z1 v; D7 ?  v- l  end
$ m- h; ~- k5 d3 D- j7 A# J' { end
+ t- Z# L3 g7 ?/ ]
$ S8 q( K: {: w- D- u/ g+ x1 I9 ? endmodule, D5 x% y! }: S/ R

4 t5 @) U! N5 x6 o2 i) E  d发送模块:
6 P/ y; V6 E5 i$ L: i' I# W. P0 d: b1 \5 E# p
module uarttx(clk,datain,idle,tx,wrsig);, d% m/ @' i! ]. f
input clk;
: z4 E  F# O9 _4 \+ i6 O: Ninput[7:0] datain;" x1 W3 g: ^! {. T3 G
output idle;
; l6 D) v' l1 ]; w  K8 Aoutput tx;
% t/ w$ `% ]# ]) P, ainput wrsig;. p! ~  p3 p8 |- Y9 _6 R1 h' \
; K' z6 w% z5 L( e- ~) \; K
reg idle;3 |- ~2 a$ q) s+ H
reg tx;
) D, D5 ?* c9 k; U3 Z, e4 q* breg [7:0] cnt;
4 R7 `& J# x4 A4 Qreg send;2 z- z: f' l) X( I  A
reg wrsigbuf;2 `' q& R2 l+ l# ?7 u+ T. W. |. i
reg wrsigrise;
; e, c5 Y4 r/ n9 ureg presult;
: S% M, w/ Q, F, @, |. @* C3 [parameter paritymode = 1'b0;
$ a8 k3 g2 l' F/ z% C% E& X6 d$ U: [  m$ U' |! ~& {, P+ B1 g
" x: ?; v* c/ V: \5 K
always @(posedge clk)
7 q2 o# q/ G8 @) j! y8 S: Mbegin% Z4 E: J  Q! k  Q( z
wrsigbuf<=wrsig;
: C2 w$ v- k' v1 swrsigrise<=(~wrsigbuf) & wrsig ;. @# e# u. y" o/ b& D
end
6 l0 o) ?( o) y! W- K! ]/ b5 L$ _8 f6 [  ^5 s" ^( @  w) b

/ H4 o2 D0 ^2 e1 balways@(posedge clk)
% Q6 E5 T+ G; O6 t# r9 ~, W/ b  begin( W! \1 }$ h) d$ P+ V
  if(wrsigrise && (~idle))
, C% a4 Q. R5 a% Q2 R  begin
7 r' @9 e7 `4 s3 h0 X1 X  send<=1'b1;4 t) b4 o8 ^! K. b  P  H
  end
4 [0 n8 {; T, l/ X7 e3 n  else if (cnt==160)
; ]) @( f% e5 R! q  begin
: m- _' E/ B. N4 O1 Q" O  send<=1'b0;; E# U! j- }/ V9 U& e+ }
  end$ t1 E, X/ i, Y& R9 k0 B. V
  end
! ^4 y9 \+ j' l, Q. N7 K  
3 f' k! \8 `3 W& e; x% Q always @(posedge clk)
1 i% i- j' X8 K3 Z/ p- R begin
- a  M: s$ b9 I% K, s  if(send==1'b1)
' N: Q4 z+ U8 ?" _$ l: w  begin
) F/ }: w" [# ?2 Y& q  case(cnt)) t& E6 m$ t2 E" a2 r. {# h. @
  8'd0:& y6 ?5 ~% S  z$ h
  begin
& \/ y0 @# q$ U) o  tx<=0;( F  X: h7 x# ^! N
  idle<=1'b1;" _1 V( y: z0 f/ U; ]
  cnt<=cnt+8'd1;, G  H" G* G1 f; L/ `3 v& {' ?* I
  end
) x) q+ `6 n2 p. F# x# @+ W  8'd16:
, B. ^8 i, j# \- h- I! k# s2 v  begin: c; p$ q$ ~$ D
  tx<=datain[0];7 x, p: C" n  A9 }) y$ y3 g
  idle<=1'b1;7 S4 a; N; M7 b  [7 a  J
  //presult<=datain[0]^paritymode;$ F: ~. {' {: \9 J1 v4 N
  cnt<=cnt+8'd1;$ I/ {5 G3 y; t, Q6 M& o
  end# M' p3 [. B; Z  _
  8'd32:
, s$ i7 G" P: ]5 P' A3 V2 v  begin
3 O8 r9 y: ]; Q: N9 P5 g3 R+ O  tx<=datain[1];8 c# U8 K2 p7 i# `, d4 M
  idle<=1'b1;2 d* H" Q6 `2 F2 s' a/ ?
  //presult<=datain[1]^presult;
* |/ Q0 A, a0 a: Q# s  cnt<=cnt+8'd1;9 g8 L% Q9 T6 n# {5 R- n4 k% Z
  end
! b) J' Q0 f  c* E& V% M' H' F  m% W  8'd48:4 H6 e7 j4 ]$ g8 i% t
  begin, p6 B# s1 {5 M, ^' P
  tx<=datain[2];* l$ s- N) g2 M$ j
  idle<=1'b1;" |- N- X; g2 k8 {( |$ O, B; D
   // presult<=datain[2]^presult;* k' q, c1 i5 n7 D2 z+ L) V
  cnt<=cnt+8'd1;. e8 A' Y' w& J& W- Q' P
  end
9 `; w. z/ a5 k4 J1 r$ M2 e  8'd64:
  l" i" U' V, d3 H  begin
8 \- g  m) U  M" N. F  tx<=datain[3];: y4 D9 j, Y- A9 ?0 Y$ E
  idle<=1'b1;
9 e5 v3 O! e3 y$ @0 n- L    //presult<=datain[3]^presult;$ F4 R$ Q" D# e/ Q5 D
  cnt<=cnt+8'd1;
% W8 P  C* z/ k0 `$ s1 Q, x  end
4 v- v3 g- a+ s6 U% b: O' S- Q- `  8'd80:$ w, N6 P1 K" P+ O( ^& u& u
  begin
! X* W+ X3 p$ O9 X# M( ~5 t  tx<=datain[4];
* Q% U; p: i) j$ P+ O& E  idle<=1'b1;
. a' N' i! r* t   // presult<=datain[4]^presult;1 |) r3 i  \: o2 O* M9 z2 `
  cnt<=cnt+8'd1;# O8 C) w% P6 g, E' T; s
  end
+ f- o. E/ o+ o: j. y9 N  8'd96:
& V) O# c2 c5 r9 R5 Z% g) P6 Y  begin
' W8 W' W) {7 S  k+ ]: B% d1 S  tx<=datain[5];
; s: o) o0 A5 `7 Q, g# k* @  idle<=1'b1;
4 a  y9 ]1 Z/ H0 \$ P- I: A) ~% w    //presult<=datain[5]^presult;' M& r1 e# K- ^5 }) {# f) B2 _
  cnt<=cnt+8'd1;! E2 h  v+ X' m0 P- c! t
  end
" C8 Y% c4 \' ?  P0 u  D) {4 k  8'd112:
. k# f. Y, R5 F) C9 z+ E  begin! b/ t# W- B& U$ {
  tx<=datain[6];
5 g; m- z  a+ i  idle<=1'b1;
2 w$ z3 s" R0 _     //presult<=datain[6]^presult;# y0 V" Z1 v+ [: P4 X3 A
  cnt<=cnt+8'd1;
3 {$ e! c1 A2 e1 N+ V  end$ N" s; _. J  s# V1 b6 r
  8'd128:4 g" P, l0 j. O! C/ {
  begin
/ t  X% T# u! H! \3 Q& p  tx<=datain[7];/ g; i. m1 Q1 Z7 z& q
  idle<=1'b1;# n. q8 i' i! y/ a0 D3 G! T, k
     //presult<=datain[7]^presult;
1 z8 B; i/ T4 ?2 e3 }! n  cnt<=cnt+8'd1;
4 _% j1 l$ u. ^( D0 [& m3 ^% R  end, o" [0 J+ `: `8 O+ r
  /*8'd144:
) s4 G# P" L$ |* n( r  O. y  begin5 a5 D7 F  M% j
  tx<=presult;$ v1 d. G" z! U# {( d4 i
  idle<=1'b1;% u- u; `! T) r' Q. l2 k1 B
  cnt<=cnt+8'd1;
7 s& p- w- c  j( L  R) p  end*/4 m" M5 p- i4 B6 P1 f5 u
  8'd144:) ^+ I  P; I5 i, D- U
  begin
" w* p5 ]6 I( C, M0 o  tx<=1;
- H. G3 M9 \/ `0 T7 l& a8 G7 W  idle<=1;, z& Q  T. m! u5 D7 h3 k- n
  cnt<=cnt+8'd1;0 X$ ?' P  l. [& H
  end$ {2 b" P) m0 y  ]9 K+ |  |  }) F
  8'd160:8 I3 A) o( `" B- o( s% _4 O9 a( o$ s
  begin  b/ E1 y9 B$ _
  tx<=1;
) t+ O" q. D% L" i7 a* f: o! S  idle<=1'b0;& H% ?4 U7 L, W# I1 ~& r4 w
  cnt<=cnt+8'd1;1 Z' Z' q, g  _" x
  end
4 b  Z- u- V3 z9 {  default:
; J: [, k/ i" a8 N( c  begin+ v8 o2 V. I+ K" Q3 u0 \
  cnt<=cnt+1;- i+ U( F, b+ B1 X& f; r
  end
8 p$ K8 W8 ?. b  endcase. ?& G0 G8 N2 }8 n
  end; z) i$ f$ h9 H
  else/ G- E0 i; h0 @) h6 o  I/ z
  begin# I2 ^: l( o5 _# S* ?- j$ d
  cnt<=8'd0;
6 g9 P/ }( J1 ]8 d  idle<=1'b0;
* w+ f! d/ n8 E  tx<=1;% l1 H# ]3 |! a2 O; q* `9 v
  end7 Q0 C! l! z; {. S  o( F( P
  end" a9 x9 s4 U( s- ?3 S7 s# l* v# O: X
  endmodule
1 O( U4 s$ S& z+ k  O ' o+ g$ F+ L+ R+ t# W* v' R/ i4 g
分频模块:$ u0 u3 b# v# w2 e3 z
module clkdiv(sysclk,clkout);5 Y: s9 j2 y. |1 W7 q# G- C* I+ |8 _
input sysclk;# J! t' R6 j8 k" q8 h
output clkout;4 s9 i5 m/ J& d% P8 T( |5 n
reg [7:0] cnt;
& E- Y; b, ^/ nreg clkout;
* D  k; c: Z0 F8 ]always @(posedge sysclk)+ a' T* f2 Y$ D. l2 W* H! K
begin0 O, T9 T* S4 ?
if(cnt==8'd12)
5 ]' d  S: I* P5 b( {& B7 L    begin
. l4 N8 u* @, h6 }2 U" M( n5 j& lclkout=1'b1;
0 Q% ]9 }( }9 R" n( @8 K8 _. Gcnt=cnt+8'd1;6 ?! r0 W% @! z
end
' H8 L# G* z9 T. w  N5 i$ Delse if(cnt==8'd26)8 ?" J& I6 c. t1 k
    begin3 u( F$ r3 L& O( q
clkout=1'b0;
. Q1 ?9 k5 W+ _+ fcnt=8'd0;) W% T5 r6 m& N# `6 n5 H; T
end/ @+ [  E9 S- r) l  h
else
2 i* s/ L( N( T  U    begin# Q+ l" K) `. [
cnt=cnt+8'b1;
# ^# K8 C( d3 }2 j& g& L( bend
$ C8 ~  d, n) tend
9 R0 g; D4 H6 K* l6 Tendmodule

该用户从未签到

2#
发表于 2013-11-24 12:35 | 只看该作者
串口好像就8位数据位最多了,没有听过16位数据的。
3 w6 D" w% w, F+ u1 ?. K+ c/ c; y4 l% G% d' A
以常用8位为例 1位起始位,8为数据位,1位奇偶校验可选,1位停止位。& ?% h! r# n5 A. u1 d" a

% k5 ?! n1 ]2 p3 s/ P
/ h# z2 k% T+ `( E你发16位怎么发现,单片机/电脑串口能行吗?

该用户从未签到

3#
 楼主| 发表于 2013-11-25 09:20 | 只看该作者
zgq800712 发表于 2013-11-24 12:351 l" @( Q: a+ P, f% X( ], K0 _, W' S( B
串口好像就8位数据位最多了,没有听过16位数据的。
& |: a5 e0 r# g. Q" L$ C3 i# t
* e! W7 E7 u) l3 F以常用8位为例 1位起始位,8为数据位,1位奇偶校验可 ...
  v% U; K4 Y  R! b# T9 p3 w
那假如我要通过串口发送一堆数据 , 那该怎么处理呢 谢谢

该用户从未签到

4#
发表于 2013-11-26 12:04 | 只看该作者
when90 发表于 2013-11-25 09:20
5 v" D1 X! x: _+ [( h那假如我要通过串口发送一堆数据 , 那该怎么处理呢 谢谢

7 d$ h4 V+ e% J  z4 \5 j/ D8位是一个字节,单片机等多是这样发的。3 R$ @1 r) j" L" o  \
一次发送一个完整的串口帧,起始,数据,结束...
  T3 b( o9 q. F# `: B' w! A4 q: j( i很多个数据就重复上面的过程。
) x1 f: W$ n2 p. w9 `
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-31 19:45 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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