TA的每日心情 | 开心 2022-1-29 15:04 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
FPGA 按键控制1秒计数器的启动与停止来控制LED[7:0],每当满一秒时,led[7:0]+1。编写程序后,对IO属性分配时,只有LED逻辑,缺少了key,clk这两个逻辑(如图),请问是什么原因?本人刚学习FPGA,希望大佬指点一下,非常感谢。) E8 b9 e4 v' \- {9 v1 S0 o, _
////////////////////////以下为代码部分,写的不好之处,请大佬批评指导,(FPGA资源为美高森美A3PE), R( g i+ x$ @, c+ a
module keyin( clk,led,key1);" _7 y: \1 i: G) U( `+ F
3 ^* s2 Z- o- m6 i8 u: H' d8 F
input clk;
) D( b. _/ D8 s: }+ Ninput key1;2 v) M0 l: O6 h- `2 z
% N2 x! U1 ?. V9 [
output led;
4 }" L. o$ s' Q5 }& g5 K- R6 m5 J' o; U% T$ o5 V4 q
//software reset# j) C# P6 x7 n+ f5 B" i
reg [31:0]rst_cnt=0;5 z2 C" O2 K: B; }( g5 W
reg rst_n;! ?. i( D; h V
" V5 i. ?+ m7 ]. T4 `
always@(posedge clk)begin7 L' ~0 _4 p+ e- I
if(rst_cnt==32'd39999999)
2 R8 Q/ P, t# { rst_n<=1'b1;4 P# @) i$ f+ H3 v9 |
$ X$ \5 B( q+ H0 o2 C4 C
else
4 m, k p4 e& G begin
1 f( Q$ F; p5 j/ C, h3 L6 L rst_cnt<=rst_cnt+1;
7 ?3 n" u/ e, b) i. T rst_n<=0;
! Y' y8 r( x8 p3 j/ R end
# l% ]8 w4 C! g4 S! h6 {3 F+ Dend& g! s6 z5 O, _, u% b
; y* E. G3 A0 a2 g
//check key change
8 y; c; ? I- j- T% A! Lreg low_sw1;
1 Q3 [: W; `9 s8 i9 l7 }reg low_sw1_r;
- ?# J2 T9 {$ j" Lreg [19:0] sample_cnt;
5 I9 ]* p% [7 b" Q5 U3 t( b/ \+ d8 ~2 u: m
//key_a
; i0 L$ r5 ~( d' V: d' p2 Nalways@(posedge clk or negedge rst_n)begin6 p: u3 j/ B" }; q j E
if(!rst_n)begin
) c& `; [5 R: ~; U p8 E low_sw1<=1'b1;
7 G* C' a3 I. I% u9 L sample_cnt<=0;: P+ h1 m. J( B' i1 H
end
3 Z. n3 B6 V% p5 ?$ Q else if(sample_cnt==799999)begin
+ J# v/ [9 I$ k; E2 { sample_cnt<=0;5 O+ d+ @4 `3 D' {: U" S
low_sw1<=key1;
. @: S! N1 P! S+ K: S! e/ m end& K C* W0 s* b5 {" X- q3 s
else2 J4 Q- Q+ H7 O) ^- d/ K
sample_cnt<=sample_cnt+1;% s! R* [0 P& p& L0 L2 s& Y' U
end$ C C' ~1 U: b- r7 s4 a8 g. S5 `
* e4 N N, x. b# |0 z1 Q* \
always@(posedge clk or negedge rst_n)begin* X( J9 }/ F4 h8 I
if(!rst_n)begin# }& i- z3 g/ h
low_sw1_r<=1'b1;
* l2 Q3 z: Q% pend* x: v6 Q3 J) X2 I0 m% {, N
else
% J! V4 c0 s/ i4 r& s begin# f/ ^- d c* O1 j8 W
low_sw1_r<=low_sw1;
* z& u- J) g% e, X0 Wend
' K+ G3 Z4 a' ? F. O$ Q( qend8 F" ^7 y; s/ G& J! H
5 U3 T. _9 _* Rwire key_en;
7 m l R; {7 j! Y6 t% ]- L* s$ {9 r- F
assign key_en=low_sw1_r&(~low_sw1); //pulse edge check! a& Z4 @: b: v/ |
: H% [$ T6 e+ }! r( K2 X
//1s timer: M" Y1 f& R9 a! Q
reg [24:0]time_cnt;: U9 O v2 J: n6 c$ |
reg time_en;* e. X4 H _( D" p8 O
reg [7:0]led;
. `, Q) N: A; h+ w9 D; }5 w# T. N! J5 v1 ] b1 B
$ \6 }6 B$ X# i0 w" R* \
always@(posedge clk )begin //这里想用按键来控制计数器开始与停止
; V, `8 Q8 |/ D/ l+ f, Y* w if(!key_en)begin+ W2 I2 ^/ v- a3 o
time_cnt<=0;
8 p; Q+ r7 n+ O, x //time_en<=0;
+ }5 ]) H Z! I X- J0 I7 {( b led<=0;
! u# P7 P. }- o" H' ~ end
8 C4 f7 T+ g2 M else begin/ y) P4 ^6 i: v8 Z& K- w: ?6 l! N
// if(key_en)8 D* J6 S" G9 w" S/ y: S3 N! N ?
if(time_cnt==25'd39999999)begin2 b* @8 F; T7 I1 A+ L5 M
time_cnt<=0;
' ?" m" I) u0 w7 E7 O5 ` //time_en<=1;
- J( d7 p: V- j- T, E led<=led+8'd1;
6 D, B5 j* ? m, L4 ~+ W end1 [; m% I5 O- c0 M# j& v
else begin
3 Z% [) ~0 I2 K9 \3 i time_cnt<=time_cnt+1;
* \ ~5 H- |. ]2 A+ d: j: h8 k //time_en<=0;
9 r: u3 Z' L) X B; ]8 `2 I% A2 {- d led<=led;5 x1 B9 _: E5 i
end
4 @* ^- E$ v U: R // else6 k; Z, o" j( Q* a0 i
// time_cnt<=time_cnt;
1 O0 _5 J1 R2 I* O$ @: Xend' g# ?+ k8 |0 M' U7 H1 m
end. @6 g# X+ v# N4 c' ^& _- u. t
endmodule, M0 r4 ?( |8 M- i( H: k7 ~4 c9 F
' O: o5 ~. n' d* J( @
|
|