Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 14983|回復: 7
打印 上一主題 下一主題

[問題求助] 用verilog程式控制LED亮暗

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-15 18:26:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我是一個verilog新手,最近在想一個問題9 \# e# b3 U5 }% N
如果我有二個LED燈,1表示亮,0表示暗
, m4 t- {0 I2 _& B8 Q, ~' M樣本如下表,如果我想要控制它每一個樣本LED亮二秒
; m9 R6 Z/ F8 A. G, V: i並依照此樣本往下依序亮
/ m( {; b/ r  ^1~2秒 LED1亮,LED2暗% y' n' n" N. E+ G8 u1 z# N
3~4秒 LED1亮,LED2亮
- x/ ]" V/ C  ]5~6秒 LED1暗,LED2亮
$ U  u: x8 n7 n0 j+ h4 J, W4 |7~8秒 LED1亮,LED2暗
0 A% d! m/ f( s, S6 XLED1 LED2
) N4 a% Z6 c8 Q# I' e 1  0
' p3 Z6 b! v0 [% i6 Y$ P' b 1  1
! D& w) V8 C: ?4 m 0  1
1 o# y8 e, }: q! ]+ K& N: T! ^3 I 1  0 ) p5 {8 X) U! L% S! B
且用2個指撥開關控制LED關(指撥開關1控制LED1關,指撥開關2控制LED2關)  \/ B% H# {0 v1 j" r: ~0 h4 `
如1~2秒時LED1亮,如果我在1~2秒時間區間內按指撥開關1,LED1熄滅,但在3秒時LED1和LED2又會亮.....一直往下執行) }; |, g; d. i! u- s
用verilog程示要怎麼寫呢?
* ~) x0 N- \' [- w, `有高手可以教我嗎?8 v; Z4 f, N8 D
感謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-18 01:17:08 | 只看該作者
"沒聲" 大大在嗎?
5 z! V- M' `, o) i
  d* j# q% v; W; r$ Q1 O( e  Q6 R不太常用verilog...哈2 c/ K0 Y7 {* j7 r9 G: }. U# [
( p# u; p# F# l. w
不過看起來就是個有條件輸入的counter而已
3#
發表於 2008-5-26 09:55:34 | 只看該作者

回復 1# 的帖子

用state machine配合組何邏輯電路即可。
4#
發表於 2008-7-3 15:43:32 | 只看該作者

我也是新手 大家一起努力

Dear Sir ,
3 v' c$ ]8 B$ D我用FSM嘗試,simulation也成功     ) G1 H, X/ f! `5 _
參考看看吧/ }  ^. H( G5 j$ B0 q

5 a$ c7 R+ N& B% Bmodule LED_Ctrl(clk, rst_n, sw, LED);
) U8 S( w- ^. J, c) i" {# l    input clk;4 D/ I8 S$ i5 S: U% U; S0 B
    input rst_n;
8 @5 d# n$ a: d, r8 Y7 A* `2 P    input [1:0] sw;
9 w! a  J7 D) a# m& D' z    output [1:0] LED;% \4 _0 S' V5 C1 p2 K
         : m8 A* J4 {6 k( u, V+ H, E
         reg [1:0] LED ;
  P% d1 B$ k* W         reg [1:0] CS ;& O: Y9 M; V  \; _& k0 Q6 p
         reg [1:0] NS ;
# V1 H+ D: L" d# E         
  l+ Q0 ~, S: C  {* v2 w" u+ {////////// STATE //////////////
% U7 {$ c( T- R% d3 {2 c3 s         parameter RESET=0 ;
2 k' j. r: R) s         parameter S1=1 ;
4 @( J% z. K4 D# x  q7 ~         parameter S2=2 ;
( S6 Q7 k" o7 u  B3 C0 \, C' b         parameter S3=3 ;
$ H) ?5 t2 X5 s         
( S+ B! n4 b5 T. I         
* a0 d9 F( y& y$ U+ ~2 k$ E) P' G         
2 ^% d; f  R6 q* i0 i, X" u         
+ w  M% Q! U5 Q# l( q* |////////////  FSM  //////////
+ W+ e) c2 P& l9 D5 o  ~9 v! k6 [6 k/ S$ R2 n, Z3 O% e+ W/ Z
always@(posedge clk or negedge rst_n)6 m' L7 i5 V  O4 R" t9 W
begin
5 {; [6 B9 m8 O/ |$ c7 d9 n5 s       if(rst_n==1'b0)
, k1 V$ `4 @( G           CS=RESET ;
0 y# F" D& L0 E1 H       else  k5 [" `& s0 w  e9 T9 i
            CS=NS ;
) A- a' B5 F8 ^0 p" i. bend
. J  D# _# ]1 o0 E5 o) |/ f3 u2 q                3 [1 F1 Q/ }7 y; n% l# [' J
                ! L" F6 ^& T' t: }" g# q

0 w0 b, h3 z* U& ~4 ^- b    always@(CS or sw)
) w. B  a9 \. J% {      begin
1 ?3 y% O6 s, C2 R5 D" e) N  l            case(CS)
- r) k( H/ Y7 J/ G% Y+ o4 g             RESET :  begin NS=S1 ; LED=2'b00 ; end & m+ v/ K* t# P8 @- ~
                  S1    :  begin NS=S2 ; //LED=2'b10 ;                  ! v, G3 n, [+ R" e. K5 B" {
                   if(sw==2'b10)+ U5 \# z- T% R. f& `: f
                       LED=2'b00 ;
8 i& U0 X4 m% d& ~  ?# l) z                   else / S& W3 g, l8 X
                                   LED=2'b10 ;  end, e4 e$ s8 r& z& [# a
                  S2    : begin NS=S3 ; //LED=2'b11 ;
1 s; o" S% W" T. T  E                                if(sw==2'b00)
+ z1 v7 o* [( y) l+ N# z( J                                    LED=2'b11 ;
2 {) q7 X% a1 D  a$ F2 A5 R5 l/ W7 T                               else if(sw==2'b01)
1 \" W/ i  K/ h4 [* ]' C5 Q+ i+ v' e                                    LED=2'b10 ;
2 n8 f3 ]0 m: r                               else if (sw==2'b10); ], B" e4 Q8 Y8 v6 p- l/ D
                                    LED=2'b01 ;, ]& J3 f+ t- k$ d2 P
                               else - k0 x: w, ^) e. A* U
                                   LED=2'b00 ; end
) R9 y& G7 W  H9 @2 T4 H                  S3    : begin NS=S1 ; //LED=2'b01 ;
2 V) l8 K. Z  A) _2 N) m                              if(sw==2'b01)
  J2 K3 S% k4 X0 T6 [                                   LED=2'b00 ;* b0 P1 s6 }, a- A+ K
                              else , X" j7 |* k  O! v# c
                                  LED=2'b01 ;  end$ U% y$ Q( \, u( o4 F/ q; ~
            default : begin NS=RESET ; LED=2'b00 ; end                   
  j9 C; f/ w9 l* X          endcase                                 ! V3 v: a% D- c0 y
      end               
! ?" i8 s! p$ ?4 l% J: {                0 T) V3 \3 v+ w5 D' a
endmodule

評分

參與人數 1Chipcoin +3 收起 理由
masonchung + 3 熱心回覆!

查看全部評分

5#
發表於 2008-7-6 15:52:24 | 只看該作者
頻率快慢可以控制明亮,你可以寫幾組除頻器,來切換~~
6#
發表於 2011-12-8 09:19:28 | 只看該作者
嗯!不錯的建議!可以好好參考!
7#
發表於 2012-3-13 23:04:23 | 只看該作者
verilog lejie yidian ....yihou keyi xuexue
8#
發表於 2012-3-14 16:02:27 | 只看該作者
其實最簡單的方法就是寫個counter,寫個判斷式來控制哪個LED要亮即可。
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-4 09:41 AM , Processed in 0.114007 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表