久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

三段式狀態機的vhdl程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2014年01月19日   【字體:
`timescale 1ns / 100ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 22:24:52 03/24/2012
// Design Name:
// Module Name: jtd
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module jtd(clk,rst_n,key0,led0,led1
);
input clk,rst_n,key0;
output led0,led1;
reg clk1khz,clk1hz;
reg[1:0] state,next_state;
reg led0,led1;
reg[8:0] count2;
reg[14:0] count1;
reg[3:0] num;
parameter s1 = 2'b00, s2 = 2'b01, s3 = 2'b10, s4 = 2'b11;

//********1khz*******
always @(posedge clk or negedge rst_n)
begin
if(!rst_n) begin
count1 <= 0;
end
else if(count1 == 15'd25000) begin
clk1khz <= ~clk1khz;
count1 <= 0;
end
else begin
count1 <= count1+1;
end
end

//*******1hz**********
always @(posedge clk1khz or negedge rst_n)
begin
if(!rst_n) begin
count2 <= 0;
end
else if(count2 == 9'd500) begin
clk1hz = ~clk1hz;
count2 <= 0;
end
else begin
count2 <= count2 + 1;
end
end

always @(posedge clk1hz or negedge rst_n)
begin
if(!rst_n) begin
num <= 0;
end
else if(num == 4'd10) begin
num <= 0;
end
else begin
num <= num + 1;
end
end


//********狀態機*******段一******
always @(posedge clk1hz or negedge rst_n)
begin
if(!rst_n)
state <= s1;
else
state <= next_state;
end

//******狀態機******段二******
always @(state)
begin
if(!rst_n)
next_state = s1;
else
case(state)
s1:
if(key0 == 0)
next_state = s4;
else if(num == 4'd10)
next_state = s2;
else
next_state = s1;
s2:
if(key0==0)
next_state = s4;
else if(num == 4'd10)
next_state = s3;
else
next_state = s2;
s3:
if(key0 == 0)
next_state = s4;
else if(num == 4'd10)
next_state = s4;
else
next_state = s3;
s4:
if(key0 == 0)
next_state = s4;
else if(num == 4'd10)
next_state = s1;
else
next_state = s4;
default:
next_state = s1;
endcase
end

//******狀態機******段三******
always @(posedge clk1hz or negedge rst_n)
begin
if(!rst_n) begin
led0 <= 0;
led1 <= 0;
end
else
case(state)
s1: begin
led0 <= 0;
led1 <= 0;
end
s2: begin
led0 <= 1;
led1 <= 0;
end
s3: begin
led0 <= 0;
led1 <= 1;
end
s4: begin
led0 <= 1;
led1 <= 1;
end
default: begin
led0 <= 0;
led1 <= 0;
end
endcase
end

endmodule

說明:00 01 10 11四個狀態,復位時是00,不復位時,key0按下時是11,key0不按下時每10s進入下一個狀態。 
關閉窗口

相關文章

主站蜘蛛池模板: 色男人的天堂 | 久久国产精品免费一区二区三区 | 99精品免费视频 | 成人免费视频在线观看 | 婷婷在线视频 | 伊人99| 老牛影视av一区二区在线观看 | 久久久久久久国产 | 午夜精品一区二区三区在线视频 | 亚洲精品一区二区久 | 欧美精品影院 | 亚洲品质自拍视频网站 | 国产精品国产a级 | 狠狠热视频 | 午夜免费精品视频 | www.精品国产| 亚洲视频免费观看 | 国产91在线观看 | 国产一区免费视频 | 国产精品伦理一区 | 亚洲精品乱码久久久久久按摩观 | 日本精品网站 | 亚洲成人av | 天天人人精品 | 久久男人 | 成人免费高清 | 欧美日韩在线观看视频 | 欧美精品一区二区三区蜜桃视频 | 日本特黄a级高清免费大片 成年人黄色小视频 | 国产在线a | 国产99久久久国产精品 | www.狠狠干| 亚洲精品一二三区 | 国产视频一区二区三区四区五区 | 午夜免费视频 | 国产精品一区二区在线免费观看 | 日本中出视频 | 成人av高清 | 久久久高清| 不卡一二区 | 麻豆精品久久久 |