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

EDA实验与实践 moto_test

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
EDA实验与实践 moto_test

: a+ A, n; }" W& x* U! J1 A5 z1 S, L  q1 ^) d
module moto_test(clock,key,duty_cycle,pwm_en,pwm_in,motoa,motob,led);
, X$ Y! M, s# [" L) Vinput clock;                            //系统时钟(48MHz)
! Y! v0 J. s' R! zinput[2:0] key;                            //按键输入(KEY1~KEY3)
1 m& r# w9 D* R2 o7 noutput[3:0]duty_cycle;                    //PWM占空比控制输出
$ F4 p5 i6 n/ Z1 Woutput pwm_en;                            //PWM控制使能端
/ P2 b( g" Y* @, @2 a$ [" ainput pwm_in;                            //产生的PWM波输入
2 }2 C* p3 ]* `! w" \( d: Uoutput motoa;                            //PWM波输出& g5 D: L6 q2 |. r9 p  R$ l
output motob;                            //PWM波输出, E! h0 i% J, P2 Q) K- _
output[4:0] led;
. L% t8 ~  R5 k6 P. a//I/O寄存器
+ ]& m2 r/ o+ Rreg[3:0]duty_cycle;
" c; n$ e% |" p; jreg pwm_en;        
5 b- n: Z* E0 B//内部寄存器
1 n6 I) b) k3 b$ dreg[16:0]count;                            //时钟分频计数器7 Y' Z# d: V- Q0 r3 e: z; \
reg[2:0] dout1,dout2,dout3,buff;        //消抖寄存器
. O( b  w& a# l  _reg moto_dir;                            //电机正反转% V) }4 q, d' _" H
reg div_clk;                            //分频时钟) _) l. C: v. c. R! G: l
wire[2:0] key_edge;                        //按键消抖输出1 g8 g( h7 B$ \" U" J# P5 C7 V9 D
2 u$ Z4 ?; w4 G" u0 H- T
assign led = ~{pwm_en,duty_cycle};            //LED输出状态指示
! c; h0 B. b4 r7 x) Z! z, G6 Z3 k+ I) Y6 G! h7 U) F
//时钟分频部分
# d% K# u6 k- K& {/ h  malways @(posedge clock)
: m0 m# g* D6 I3 U* S. m* sbegin6 x$ r! H+ i2 p0 ]
    if (count < 17'd120000)
4 a: R$ @% Z9 B, u( p    begin
; F; `0 E! g$ y4 O         count <= count + 1'b1;7 f: h$ Z8 q5 {* i( @) x0 T6 `2 ]
         div_clk <= 1'b0;' e. t! r3 F) n) Y! ~7 G' b6 m* a3 B
     end2 Q2 h8 p5 M+ P) u$ U) j9 t
     else
5 t, o8 M2 y8 k     begin
- E3 D& v" l+ o6 e         count <= 17'd0;
. m6 a8 S$ q: |* ~& j6 s         div_clk <= 1'b1;7 a- O8 l2 l3 j- x4 h& `4 {& M/ \4 U8 b
     end2 H$ {" F% ^( U( t) O
end4 f1 F* N8 P" V7 U! a& X, D

5 H( K7 R$ l/ e7 o! V8 m, g' c//按键消抖部分& E  s/ Q, \6 b2 S  ^+ W
always @(posedge clock)# D1 R$ W; U+ E7 ^
begin* X, F+ @8 M7 \4 {
    if(div_clk)# e- ]. q! f, c* S7 j
    begin
* E2 X3 ?- h; |9 s7 I9 x1 ?        dout1 <= key;
- U# ]8 _/ P7 T        dout2 <= dout1;) ^* J3 X0 @6 a& m
        dout3 <= dout2;
) s& c6 x; R/ k. M5 B    end    # J, b& |# J- `/ Q+ T* f
end8 E) x/ i; P$ @3 n, k# `9 K3 l" R+ J& W

+ x7 m. U9 x- I8 i2 e; b, j//按键边沿检测部分6 q# A+ \+ h  [: A: [
always @(posedge clock)! y0 I, F, O* k# A
begin
& S6 h3 O+ v4 {& h- `  g    buff <= dout1 | dout2 | dout3;% O! g# x+ b/ P0 e* ^. _" k- h
end8 n9 B5 z0 z# P, t- ~' k  K! `5 w

9 t9 t  r5 H. Y& nassign key_edge = ~(dout1 | dout2 | dout3) & buff;
5 Z: I0 t6 D: \  K! `6 b1 m  C8 h" d6 Q8 q
always @(posedge clock)                            //按键1,控制电动机速度% _& D) p! k. C) U" V/ p( s
begin
$ \# L' H7 ^/ \' {    if(key_edge[0])   
8 |7 ]! o1 ?" {" r" L0 f0 x: d# C        duty_cycle <= duty_cycle + 1'b1;
" X0 Z$ m; ?3 i1 }end
! r+ y2 o" H6 N  s& \
: l6 j) A( U6 a* N6 V7 a- walways @(posedge clock)                            //按键2,控制电动机启动、停止' Q* @. w& j; h. b* M9 h' h
begin
( j% K5 z. O1 |. y. U. _* W$ R    if(key_edge[1])    6 \1 G/ b9 ]; o( _! i4 M7 [3 Z
        pwm_en <= ~pwm_en;
5 L  Z  r! k& G! C( S0 c3 Zend
% X' X- S* _' p8 N& d4 Q) ]. B: S* _' I& C% P' V* c8 N9 g
always @(posedge clock)                            //按键3,控制电动机正/反转1 {" c. W& v1 W$ t3 @& E6 ~% P
begin
5 _7 W, O1 [: v8 X3 b- G$ i# Z6 G3 g    if(key_edge[2])    - R8 B1 X- K: K5 J
        moto_dir <= ~moto_dir;9 }9 \  U. t$ a% m
end: a! H$ y& i& H* y1 b
  l# w% L, C; C) C
assign motoa = moto_dir ? pwm_in : 1'b0;
% c$ {! O* W! C+ j9 Q& nassign motob = moto_dir ? 1'b0 : pwm_in;
' @  X8 ?0 h7 |' z" k% _3 j, N* `
2 k* N6 v% Q" T' k9 Nendmodule
! I& P6 k/ J' X$ N9 Y2 Q9 B
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 09:06 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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