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,希望大佬指点一下,非常感谢。# E O7 V& t+ J( B; {8 v
////////////////////////以下为代码部分,写的不好之处,请大佬批评指导,(FPGA资源为美高森美A3PE)/ s( ?5 ^- }% }
module keyin( clk,led,key1);! G4 D3 [0 J/ E4 J# G- f% P7 V
. Q7 O" X- F5 |
input clk;1 u8 j9 d2 [& D% f9 B, [% f
input key1;; ~% W- ~* z, i: f5 \1 b( Q# s b
e1 ~% n) E* b- ]3 k' ?
output led;/ J+ O ]& f! n1 [+ f' z
' \; d# I1 q! W+ |/ `# C' M+ l2 W//software reset9 d4 `* u$ d* h7 ?3 P
reg [31:0]rst_cnt=0;
6 S7 K0 z* h" Hreg rst_n;
: f1 `( a- `0 H* M; r$ z0 f
+ k$ |) J; I+ Q3 _always@(posedge clk)begin/ m2 h: D: v. V0 D4 f! \
if(rst_cnt==32'd39999999)
; @, ~ }: ^# n" ^1 A6 { rst_n<=1'b1;" V _- I) B8 P. M: |
9 _. A/ h S; ?; S& o8 Q9 k8 ^
else& r# B. R5 ?/ }
begin
; X5 Q5 W& @ q" c5 a$ l( R: l rst_cnt<=rst_cnt+1;- d1 Q ]0 l/ f- _$ q
rst_n<=0;
8 v8 g& z6 d7 N end
# c) {3 M% g5 }1 d1 T( K5 y/ Vend2 P. j+ L8 B. h- ~
7 S: }3 Z: m- E1 x- m% D& D
//check key change, B8 r$ p6 E w" v% A9 C
reg low_sw1;# i" o* @6 m8 _) C: ]. |' K( Q
reg low_sw1_r;6 b, P, _ t# q# r: @+ [; {: v' p
reg [19:0] sample_cnt;" p9 K& l7 P( A
' m" l- a! d: W; [
//key_a' [! I2 y" g+ }5 l% j& |( p, `3 e
always@(posedge clk or negedge rst_n)begin
( `3 `7 k, J8 R9 N/ ] if(!rst_n)begin6 |0 U6 @ e8 ~6 i# d* I: {" f. M
low_sw1<=1'b1;6 u! T; W) _$ l3 O
sample_cnt<=0;
. C8 m2 W+ |% Q2 D H' ]' o% w end
i* z; z; t) [& S else if(sample_cnt==799999)begin
* {$ s# v! t( x) j8 b& N* G sample_cnt<=0;
5 C3 j) j, ]5 D/ A3 m% l low_sw1<=key1;
. _- ?, g7 N Y- x9 b, m7 H* H end- @: G1 ~( o. s( {: ^' k# I
else6 o. j$ A6 B- F _- n) d4 S
sample_cnt<=sample_cnt+1;
, T# c, \9 z8 _( F% Iend
$ U3 z1 e+ e9 u0 n0 h- x
2 C4 S/ z% v" K7 ^: C7 T+ Zalways@(posedge clk or negedge rst_n)begin
7 g# j' A' A! H1 _/ H if(!rst_n)begin7 x" i- ^# F( z* k2 R; d
low_sw1_r<=1'b1;
7 t/ c/ O5 `# l% O/ e3 oend4 @3 Q ^+ G( y0 h( j- B+ K
else
7 o1 n# k5 P, D7 ~4 X1 I2 ]1 [ begin
. L" \6 z, O1 ~' T low_sw1_r<=low_sw1;
' B( u) v1 v8 V+ P' K# y8 nend
* q3 p# W# o! Zend$ S7 k5 f' H2 f- n1 V) h9 H: G
. O, J7 \" V l! T6 g
wire key_en;$ n2 W& ]0 d8 ^6 d' p3 p- o8 u) a3 p
' a8 x/ D1 `2 h1 e7 Z
assign key_en=low_sw1_r&(~low_sw1); //pulse edge check
) C; w% l) S0 q$ K" H
4 m# w6 f$ e5 v7 _' b. U; R, n//1s timer
5 `! Y; i0 ^1 T; Y; p N* A% Freg [24:0]time_cnt;& A* b) J7 ?2 |% |+ f. D" v! ?
reg time_en;. r5 D4 T% \2 p. B6 Q+ o
reg [7:0]led;) U* r7 Y3 Y1 ` `6 T
3 }% ?# W a& `2 g- s9 K' G
3 m+ u# J9 O, y# V: n; d \4 | }4 |always@(posedge clk )begin //这里想用按键来控制计数器开始与停止' c7 \4 G3 z! ?, c d/ ~2 m6 n% x2 m
if(!key_en)begin
* P4 P4 i- z7 g, J" | time_cnt<=0;* Y" Z1 U3 `2 `; ]! j
//time_en<=0;3 c+ _8 y% @+ A$ q
led<=0;
' V% z$ D3 |( k8 Z" }' U! H end
3 D* ?8 ^6 H7 i0 ] else begin1 W9 U% A7 j7 v
// if(key_en). E9 l5 p9 M& w5 Q$ O) w( R0 X
if(time_cnt==25'd39999999)begin
4 M! ?9 K3 P* k: t; ] time_cnt<=0;
) V$ I+ S) b$ d5 E$ R. i, N f) K4 [ //time_en<=1;
3 x8 E8 O* T% \7 p led<=led+8'd1;
8 k3 o+ Y5 R$ W( S end% y8 b* h- O: R- J) f2 B
else begin6 G: t; }& N6 v6 o) [" V& L1 J
time_cnt<=time_cnt+1;7 P" H3 }2 S; X( _; N$ _( [
//time_en<=0;: Y9 D2 b$ u5 U
led<=led;; T: l5 s5 g: q4 d! F
end3 t9 [) `# K5 a' Y# \3 U+ l
// else
4 l/ j0 L" i K" b2 \7 k // time_cnt<=time_cnt;
& p. N5 {6 f9 wend
- {" [; f% G- l7 eend
8 S! i% x, H# E! O& aendmodule- L* E O4 G( i+ T' L1 m8 q# u" q
" w% S' Y0 W$ d0 [6 h5 W0 i
|
|