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,希望大佬指点一下,非常感谢。$ c6 c( t/ z* q
////////////////////////以下为代码部分,写的不好之处,请大佬批评指导,(FPGA资源为美高森美A3PE)
: F. h7 k; @. smodule keyin( clk,led,key1);
; a; F0 e% d+ t; I7 i1 L
! G/ w7 b6 [2 N; J' ninput clk;
0 o i- r' u1 Z! c4 ainput key1;
7 E3 g9 Q8 i( N9 n$ \3 H: c$ G6 a- K5 ?) S2 L8 Z. T
output led;2 S" l2 n* Z& F
& r B# N9 h& J% t% o' c0 q//software reset0 C1 s; Z4 N. g2 T6 h# g, x$ {
reg [31:0]rst_cnt=0;7 M0 z, q" y. X$ B) {
reg rst_n;
% Q+ M; w3 \( X; B( _' F6 m9 `5 ~- T$ U/ n$ {' G: x. e7 Y
always@(posedge clk)begin
8 L/ X4 C% h y5 ]5 u. H) Z2 h if(rst_cnt==32'd39999999)* x9 z. c6 [0 F' S: h( k; h
rst_n<=1'b1;
% O+ c* M& M, z0 b) ]3 y- F. z j8 ~6 v
else
" u; D+ o9 t7 G7 ]/ I7 D begin. B! m) s. h& F+ k7 `. k. y
rst_cnt<=rst_cnt+1;( B! r0 }4 B7 S
rst_n<=0;
! q' [( A- T* Y0 }3 B/ h' o end
& X; V. M5 l# S5 yend
2 t6 l" M# X: `0 q G, W, A d% u( a( Z: G% K# s& f
//check key change
) l, J9 ]; N: u1 d" _( P3 D% f) Wreg low_sw1;# R( I- M g% K( l
reg low_sw1_r;# L! n2 f3 X( Y X+ \( N0 W5 I
reg [19:0] sample_cnt;
5 g8 M+ \' ?0 J/ f7 G* b
; E2 Y+ I! p- e//key_a. c7 U; U) \' _$ l7 c
always@(posedge clk or negedge rst_n)begin
$ V4 O$ f, U+ O7 H9 o9 Y8 ^0 T, V if(!rst_n)begin
& Y v2 i, F+ S5 J9 s# I- ~ low_sw1<=1'b1;# A4 m; z2 H9 a5 E
sample_cnt<=0;2 ]% O$ B+ n9 i5 N
end
1 w. G+ v3 Q, h$ }! C# A8 O; q else if(sample_cnt==799999)begin
% P3 v6 ]( v( T3 T+ x1 ]+ J, F. G sample_cnt<=0;
3 V/ `( s( n' S z; p/ b low_sw1<=key1;
9 Z; S, k3 i. p5 R end
( @) L. c' ~( ?% n3 `2 o else' E( c+ l: b( H
sample_cnt<=sample_cnt+1;
' q1 `( P7 A+ C0 pend B% h8 C& A8 g% o
( P" C; }8 @2 Y5 W5 [# W
always@(posedge clk or negedge rst_n)begin+ X+ Y& K7 B8 t. W) [8 k
if(!rst_n)begin/ }% L2 |5 g4 O. C" }- K
low_sw1_r<=1'b1;0 A$ {; R) I. `. o; v3 n
end5 O. i; U; R+ h: f- e
else. j, k" a$ g8 K
begin
6 ?1 n, t+ W6 J# c, X* S low_sw1_r<=low_sw1;
9 r8 W4 n, e; z" E6 @. J) k iend0 n) m( A' H, k0 n, Z
end
7 n6 P" w' o' w1 g, j# W) }0 Y# L" H! n; T8 a: j
wire key_en;; ]* I n, }! G% _
+ y7 J: h& m# [2 Lassign key_en=low_sw1_r&(~low_sw1); //pulse edge check
* f8 ^- {& l- C% O# b& J
2 M+ x5 c$ ^8 E1 F: h$ f' G//1s timer
( D# N/ [; N) P$ K! S* ^reg [24:0]time_cnt;& t$ u a, Z5 Q3 y. ~" x: c
reg time_en;+ p- s, n- [# A, f9 J
reg [7:0]led;4 ^: e7 }/ z2 m& O1 D
5 s, |7 _' w5 s7 `0 W
, Z2 {- v, E& K; Z* e Malways@(posedge clk )begin //这里想用按键来控制计数器开始与停止- s; n: x& m( ]
if(!key_en)begin9 K2 F& s$ B' s4 Y
time_cnt<=0;! n; [7 l+ \- U
//time_en<=0;( r4 Q) {, |5 J
led<=0;8 v8 r$ F/ u$ ^# g7 p; D4 C
end
2 o, i/ P9 i5 }* x4 D! u else begin
c" L9 @5 K. l) s // if(key_en)
- d- q/ y) @3 i4 a) ` if(time_cnt==25'd39999999)begin
V( k- C: u1 Q. f time_cnt<=0;
$ W( B& a/ D9 t4 R% |& L //time_en<=1;) a# f# i# W/ X4 @! {" d+ w8 C
led<=led+8'd1;
) q: p% Q" u$ p8 H1 P end9 t" U" m4 t }; o e4 G
else begin2 d) N% U0 V* j! b3 {
time_cnt<=time_cnt+1;8 H! e" k% i* e# W! g- c
//time_en<=0;& s) Z' }5 @" b7 w: n, E' A. \; A9 x+ A
led<=led;5 H6 Q3 W/ u% B& a& N7 O
end7 m+ Q \9 G6 B: I. H
// else
5 L2 I; d1 a n9 P // time_cnt<=time_cnt;+ ~( W8 \8 [0 B: q, S- k& p8 O5 n
end$ q9 q8 b1 U5 X" |4 `
end
7 @3 J9 P/ U/ r; X! Z2 H* Qendmodule! F1 t2 D' u& H4 T
( E$ l4 C$ \ C1 s" x) }
|
|