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

EDA实验与实践 moto_test

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
EDA实验与实践 moto_test

% q& P/ H4 Q" {3 p- `4 u4 j+ [
7 [- F- J4 k' c0 V) b  E! smodule moto_test(clock,key,duty_cycle,pwm_en,pwm_in,motoa,motob,led);% r1 h8 z0 I! c! n7 E
input clock;                            //系统时钟(48MHz)6 d7 x( R( K0 P; h- k7 _) r
input[2:0] key;                            //按键输入(KEY1~KEY3)% ?7 |: Z& ?  ]1 ^; Z7 B. z
output[3:0]duty_cycle;                    //PWM占空比控制输出( `. n( p5 f7 @3 A6 ?( O
output pwm_en;                            //PWM控制使能端4 I; A8 U& U0 z3 J
input pwm_in;                            //产生的PWM波输入
$ }* ?0 R1 v, G) w; routput motoa;                            //PWM波输出# ~% f9 o( b" w  I& t6 |
output motob;                            //PWM波输出8 Q* S4 s0 ~# C
output[4:0] led;
$ |3 _7 a" y. W- `! Y//I/O寄存器6 L  a: n3 {9 K1 v3 H
reg[3:0]duty_cycle;* ?3 _7 X" c  r9 M- R
reg pwm_en;        ' A0 l9 h) S6 @4 \" f4 }4 J9 \3 p
//内部寄存器
6 O3 @$ S; m0 O' i9 g$ Wreg[16:0]count;                            //时钟分频计数器3 `4 z) C" Q$ b) {/ m( O3 S
reg[2:0] dout1,dout2,dout3,buff;        //消抖寄存器" g- y' j; w# s0 m) @* s1 D
reg moto_dir;                            //电机正反转
6 p; x8 U. g+ ]2 m; h- `! nreg div_clk;                            //分频时钟6 e; h6 j( v5 d3 V/ J
wire[2:0] key_edge;                        //按键消抖输出
) W! ^# n! t! T3 D2 A$ C
; n! O# _+ N9 O/ \assign led = ~{pwm_en,duty_cycle};            //LED输出状态指示
( X2 G2 f. ?2 r( V3 p( Q8 Y0 b$ r6 Z
//时钟分频部分
* n  t- Y) Q# y  falways @(posedge clock)" U/ V+ F7 a4 X$ L0 G2 _
begin1 @. v' {  F( O( P
    if (count < 17'd120000)' F7 L3 f& a, M! d# m8 @# c
    begin
  V! @, R% \$ U7 J% m2 x1 [( ?         count <= count + 1'b1;0 Z* j9 Z3 B5 R9 Q0 {! O' O
         div_clk <= 1'b0;
6 b% L* A. n6 Y- G$ K/ q* q3 a, Y     end6 R- K6 |5 g4 ]$ b3 r# v# H0 n
     else; J  ?: @8 y5 d3 O: D7 h/ i* f
     begin
5 z0 y# y9 C7 ?+ t         count <= 17'd0;
* j3 R/ d6 g- F2 N# G( [/ I3 I         div_clk <= 1'b1;
+ i; T8 ~2 ?; M# M9 F     end
* ^) }- H( f3 v( M5 Kend
4 P. c4 C& j+ e- J5 x+ ^. w
8 k7 I  L7 w- _7 i) I3 r//按键消抖部分
+ u: o- E# F/ F) E# c: valways @(posedge clock)- S5 b. }7 b$ h9 g
begin
! B! g9 f0 J& ^! G    if(div_clk)
) d# b! v3 \, q% ?$ ]8 a    begin: u" H( ?0 J! \
        dout1 <= key;6 u& {5 P$ x* s1 y+ a
        dout2 <= dout1;- ^1 F; C2 M+ B; m: s6 ~
        dout3 <= dout2;
9 b1 S" }, D; B6 E    end   
# y8 @' v! t- q  M/ g- Z6 Q0 v( dend
9 m" i. p0 m( j  E; j" w. y% V: s* J. ?* j- ?! I
//按键边沿检测部分
/ M4 U+ C) k* f0 l" yalways @(posedge clock)
# l& u; g6 r6 M' z) @begin+ A9 x0 ]8 {2 R8 z: }
    buff <= dout1 | dout2 | dout3;
; |0 d+ Y, K- Y  u% w  Uend
7 m( @( F! p) i. Y5 @
8 w9 q$ e3 M0 T. q- Lassign key_edge = ~(dout1 | dout2 | dout3) & buff;+ [" g- k  }: e

+ l% Q( j7 Z( {! Q, u/ r1 i$ \# ^3 Qalways @(posedge clock)                            //按键1,控制电动机速度  G) k# s9 z9 [! N0 S, E4 N; q' B' x$ \/ f
begin2 |* K( I7 E! _
    if(key_edge[0])    6 y: F7 Y5 c7 e) n
        duty_cycle <= duty_cycle + 1'b1;
$ s* [1 |5 P+ w5 aend
" D. X3 G! h$ q
" M) q7 i4 t# f& galways @(posedge clock)                            //按键2,控制电动机启动、停止
8 a3 ]- q/ i# f8 H5 @$ wbegin( z+ h: ^+ x0 a- P% c8 N
    if(key_edge[1])    - ?# N9 v# }# t: r, D2 E% o
        pwm_en <= ~pwm_en;
. R( S, x8 u6 r: D* h. Bend! M9 n1 m3 d& Y; F

6 U6 p: r! T( m7 `2 ]always @(posedge clock)                            //按键3,控制电动机正/反转
, x: J. M9 j* J# w: }# Wbegin, }# W5 x& d. V+ [. t7 _1 D
    if(key_edge[2])   
5 S6 d! D2 O7 y4 \3 r$ j: C        moto_dir <= ~moto_dir;
, z$ U3 {# @3 F0 v# k4 ?end
. X4 E' F/ r" R) S2 U' H+ r7 |6 u) Z% A6 w8 y9 T, V" B
assign motoa = moto_dir ? pwm_in : 1'b0;: X& N3 C6 g* I3 }) ^
assign motob = moto_dir ? 1'b0 : pwm_in;9 u0 U  V4 H" u$ m7 Z3 ~
- S) ^# A; q% I& I6 t8 x
endmodule
* k* J; A! X9 X! v: L! C5 T/ Q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 09:15 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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