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,希望大佬指点一下,非常感谢。
6 o2 d/ A3 k: Y, S; j4 X, d) i+ B////////////////////////以下为代码部分,写的不好之处,请大佬批评指导,(FPGA资源为美高森美A3PE). i6 K) m+ M4 l! j- p6 |
module keyin( clk,led,key1);
. \8 @8 t: g3 h% Y$ X: y; Z1 m% O! G
input clk;
/ l- u$ `: ? E9 @( u+ `2 oinput key1;
/ _0 T; G/ k& Q" a# H( N0 D F) O: M8 j, G! L
output led;3 t2 v3 S* ^5 d* z/ B! N
) I- r: i! S. |5 e2 w) M( Y
//software reset
y5 p% q; b4 h$ {/ q; Rreg [31:0]rst_cnt=0;
2 J, I* c2 U, E$ xreg rst_n;5 N2 l! v" H5 X* e% h; R6 X
+ \: ?0 ]' E" N( e; Z
always@(posedge clk)begin
7 f7 k% D" O/ E' Q ~ if(rst_cnt==32'd39999999)
1 ?1 A6 o" ^0 ^2 B) O. L8 ?' Y4 Y) O rst_n<=1'b1;$ X- h2 Q: K9 X* T1 c0 y6 y
2 `9 |8 J+ f, n( A8 j) n
else) A- ]6 @0 J& _' L& e: [
begin
! u' Z! n3 L( s$ V5 P rst_cnt<=rst_cnt+1;/ S* i; j7 o7 X0 h5 k
rst_n<=0;; `! @+ O7 P% @$ c
end4 `8 V4 F) a8 v; B7 Q6 w" q
end8 Y" ~; |4 N0 \9 [1 A
4 f; q6 w) h( H8 S% u/ ~//check key change
E9 i3 [+ P- ^6 H" I, ~/ Y+ Breg low_sw1;& G6 `& d; }' n, m) P1 Q, G
reg low_sw1_r;
! P3 A9 ?6 @: u' ~reg [19:0] sample_cnt;
# h) R- e3 V( j4 u5 J) j. O* E* R3 _! A
//key_a2 T! r1 X D+ W0 x* ^8 J, F( O
always@(posedge clk or negedge rst_n)begin+ j- F" }8 U& s3 J$ l
if(!rst_n)begin3 n% [7 z6 Y! F0 c0 e( K/ x
low_sw1<=1'b1;
& V. e/ T h& o, y2 K sample_cnt<=0;
8 n$ D/ U! G" y( b l4 l end
! e, a6 q s; l) o$ C( A' S4 B else if(sample_cnt==799999)begin
, Y& N" O7 E4 E- P! @7 l sample_cnt<=0;+ l; g! k2 ?2 {9 f# ]0 V+ O9 j: \& C
low_sw1<=key1;
2 C. ~- W8 d" G+ z* } end
% m, O: f! I- W: ` else/ t# g& u7 h2 T& _
sample_cnt<=sample_cnt+1;9 }. D3 @& K4 L# O
end
: _ X% U0 f' B9 }5 L! c: G$ V5 w- q
( Z1 z% U0 J# Y# M8 ialways@(posedge clk or negedge rst_n)begin$ U8 T h. k, z6 ~, \3 e+ P
if(!rst_n)begin% |$ ?, A) A5 l- B
low_sw1_r<=1'b1;
# s. B! e4 ]6 i" `end
) Q5 F V% Q- l" L! [# a. u. V else$ d: u3 Z* _# u$ j& ]
begin+ l/ ~. w9 y% P1 q# d5 T3 g
low_sw1_r<=low_sw1;4 ^0 k0 U: Z# }8 K( c8 a
end
) Z k3 q8 a% R" K8 ]; cend
& e, e! ?) Q, M# Q9 X: i' e; B4 S) N0 l
wire key_en;4 s; Z9 I" u6 \
* T& S, H* G. L( v2 s) A
assign key_en=low_sw1_r&(~low_sw1); //pulse edge check
H1 u o$ v: i* `" u6 w' ?; x! T) L h2 D: i
//1s timer3 h" _7 K& z2 o; i( e/ f+ Z
reg [24:0]time_cnt;( E6 M: Z. b6 ^; o! ^7 Y: X+ [
reg time_en;/ o" B* l/ ]8 g+ l9 I
reg [7:0]led;( Y; ^5 U% ` B
% w8 ?/ ~4 \4 U3 e
6 n6 b( Q( D, B7 J4 R3 n) Z
always@(posedge clk )begin //这里想用按键来控制计数器开始与停止6 A4 z1 ~& [/ V; N
if(!key_en)begin7 t; \& q" v9 G
time_cnt<=0;# T% X# t* S; a- n& r
//time_en<=0;
1 _/ J% Q3 m; I' N led<=0;% m) [2 O: T1 d; N# @
end
) e) q8 W' p) H4 c else begin# w- h' j' ]( W' ]
// if(key_en)
# b4 {& o' d a, d if(time_cnt==25'd39999999)begin
/ L& i$ a, Y1 f. W time_cnt<=0;
$ F$ r- K$ w6 e //time_en<=1;
& B% ]2 f4 \; p4 L led<=led+8'd1;0 C$ g) d, Q9 K8 P4 r: u
end
+ T {/ T- D4 o. ^, X0 ^3 E; U else begin: \3 }' M$ w$ F$ f7 k/ J4 }
time_cnt<=time_cnt+1;
) S* d4 l/ W0 n //time_en<=0;
4 T" ^5 _) U6 h$ Q" @ led<=led;, x% _" |' s! H; p% l0 F# Q& W
end
: e7 @8 x% Y1 x: |' l. E5 p // else4 `2 K' m* `8 S
// time_cnt<=time_cnt;& ~5 C$ I' ~. [9 d7 [6 L
end, d5 z+ b1 Q& k
end
# L+ M: u) r8 r1 ]endmodule
: A0 v# H K2 ~1 |
" F' n4 {/ g c4 z3 x |
|