当前位置: 首页 > wzjs >正文

哈尔滨企业网站建设报价定制产品网站有哪些

哈尔滨企业网站建设报价,定制产品网站有哪些,wordpress评论提交特效,平台营销策略都有哪些一、设计目标 在DE2-115板子上用 Verilog编程实现一个分秒计数器,并具备按键暂停、按键消抖功能。 (1)引脚分配符合DE2-115开发板规范; (2)基于状态机思想设计,20ms周期消除机械抖动。 二、程…

一、设计目标

        在DE2-115板子上用 Verilog编程实现一个分秒计数器,并具备按键暂停、按键消抖功能。

(1)引脚分配符合DE2-115开发板规范;

(2)基于状态机思想设计,20ms周期消除机械抖动。

二、程序设计实现代码

1、顶层模块

module top(input CLOCK_50,     // 50MHz时钟(PIN_Y2)input KEY0,         // 复位按钮(PIN_M23)input KEY1,         // 暂停按钮(PIN_M21)output [6:0] HEX0,  // 秒个位(PIN_G18等)output [6:0] HEX1,  // 秒十位(PIN_M24等)output [6:0] HEX2,  // 分个位(PIN_K22等)output [6:0] HEX3   // 分十位(PIN_K21等)
);// 状态定义
localparam RUN    = 1'b0;
localparam PAUSE  = 1'b1;// 内部信号声明
wire reset = ~KEY0;     // 低电平有效复位
wire clk_1hz;           // 1Hz时钟
wire carry_sec;         
wire key_stable;        // 消抖后的按键信号
reg key_stable_d;       // 用于边沿检测的延迟寄存器// 计数器输出信号定义
wire [3:0] sec_ones; 
wire [3:0] sec_tens;
wire [3:0] min_ones;
wire [3:0] min_tens;// 状态寄存器
reg current_state;
reg next_state;// 消抖后的暂停信号
debounce pause_debouncer(.clk(CLOCK_50),.button(~KEY1),     // KEY1低电平有效.out(key_stable)
);// 边沿检测逻辑(上升沿)
always @(posedge CLOCK_50) beginkey_stable_d <= key_stable;
end
wire key_rise = key_stable & ~key_stable_d;// 状态转移逻辑
always @(*) begincase (current_state)RUN:   next_state = key_rise ? PAUSE : RUN;PAUSE: next_state = key_rise ? RUN   : PAUSE;default: next_state = RUN;endcase
end// 状态翻转逻辑(每次按键翻转pause_state)
always @(posedge CLOCK_50 or posedge reset) beginif (reset) current_state <= RUN;else current_state <= next_state;
end
// 输出控制信号
wire pause = (current_state == PAUSE);// 时钟分频模块实例化
clk_divider clk_div(.clk(CLOCK_50),.reset(reset),.pause(pause),.clk_1hz(clk_1hz)
);// 秒计数器模块实例化
second_counter sec_cnt(.clk(clk_1hz),.reset(reset),.enable(~pause),    // 暂停时停止计数.sec_ones(sec_ones),.sec_tens(sec_tens),.carry_sec(carry_sec)
);// 分钟计数器模块实例化
minute_counter min_cnt(.clk(clk_1hz),.reset(reset),.inc(carry_sec),.min_ones(min_ones),.min_tens(min_tens)
);// 七段译码器实例化
seg7_decoder seg_sec0(.bcd(sec_ones), .seg(HEX0));  // 秒个位
seg7_decoder seg_sec1(.bcd(sec_tens), .seg(HEX1));  // 秒十位
seg7_decoder seg_min0(.bcd(min_ones), .seg(HEX2));  // 分个位
seg7_decoder seg_min1(.bcd(min_tens), .seg(HEX3));  // 分十位endmodule

2、时钟分频模块(带暂停控制)

// 时钟分频模块(带暂停控制)
module clk_divider(input clk,input reset,input pause, output reg clk_1hz
);
reg [25:0] counter;always @(posedge clk or posedge reset) beginif (reset) begincounter <= 0;clk_1hz <= 0;endelse if (!pause) begin  // 暂停时停止分频if (counter == 26'd24_999_999) begincounter <= 0;clk_1hz <= ~clk_1hz;endelse begincounter <= counter + 1;endend
end
endmodule

3、带使能端的秒计数器

// 带使能端的秒计数器
module second_counter(input clk,input reset,input enable,       // 使能信号output reg [3:0] sec_ones,output reg [3:0] sec_tens,output carry_sec    // 改为组合逻辑输出
);
// 组合逻辑判断是否到达59秒
assign carry_sec = (sec_ones == 9) && (sec_tens == 5);
always @(posedge clk or posedge reset) beginif (reset) beginsec_ones <= 0;sec_tens <= 0;endelse if (enable) beginif (sec_ones == 9) beginsec_ones <= 0;if (sec_tens == 5)sec_tens <= 0;elsesec_tens <= sec_tens + 1;endelse beginsec_ones <= sec_ones + 1;endend
end
endmodule

4、分钟计数器


// 分钟计数器
module minute_counter(input clk,input reset,input inc,output reg [3:0] min_ones,output reg [3:0] min_tens
);
always @(posedge clk or posedge reset) beginif (reset) beginmin_ones <= 0;min_tens <= 0;endelse if (inc) beginif (min_ones == 9) beginmin_ones <= 0;if (min_tens == 5)min_tens <= 0;elsemin_tens <= min_tens + 1;endelse beginmin_ones <= min_ones + 1;endend
end
endmodule

5、七段译码器

// 七段译码器
module seg7_decoder(input [3:0] bcd,output reg [6:0] seg
);
always @(*) begincase (bcd)4'd0 : seg = 7'b1000000; // 04'd1 : seg = 7'b1111001; // 14'd2 : seg = 7'b0100100; // 24'd3 : seg = 7'b0110000; // 34'd4 : seg = 7'b0011001; // 44'd5 : seg = 7'b0010010; // 54'd6 : seg = 7'b0000010; // 64'd7 : seg = 7'b1111000; // 74'd8 : seg = 7'b0000000; // 84'd9 : seg = 7'b0010000; // 9default : seg = 7'b1111111; // 灭endcase
end
endmodule

6、按键消抖模块(20ms)

// 按键消抖模块(20ms消抖)
module debounce(input clk,input button,output reg out
);
reg [19:0] counter;
reg [2:0] button_sync;  // 三级同步器
always @(posedge clk) begin// 同步器链button_sync <= {button_sync[1:0], button};// 消抖逻辑if (button_sync[2] != out) begincounter <= counter + 1;if (&counter) begin  // 计满20ms(50MHz时钟)out <= button_sync[2];counter <= 0;endendelse begincounter <= 0;end
end
endmodule

三、结果演示

四、总结

        状态机设计有效提升了系统的可靠性和可维护性,按键消抖是嵌入式系统设计的必备技能,同时时序分析在FPGA设计中至关重要。由于本人初步学习认知浅薄,上述内容或有诸多不详错漏之处,望各位海涵并指出批正。


文章转载自:

http://z2fJ5MEp.Lffqy.cn
http://KtvdTrvw.Lffqy.cn
http://xJAqs7XY.Lffqy.cn
http://JVfw56Ej.Lffqy.cn
http://O2y4gPOW.Lffqy.cn
http://OdUgRCs2.Lffqy.cn
http://TmVZgBbZ.Lffqy.cn
http://iQnwQofZ.Lffqy.cn
http://NfgB2XMg.Lffqy.cn
http://Ubrm8bNc.Lffqy.cn
http://FL2lihXU.Lffqy.cn
http://lRHzR5ZN.Lffqy.cn
http://Wogwim3Y.Lffqy.cn
http://7rcXBPvK.Lffqy.cn
http://yAKJlf29.Lffqy.cn
http://3Xa3nXug.Lffqy.cn
http://vFZS9Nh9.Lffqy.cn
http://tGdpsRa3.Lffqy.cn
http://jJzr4egf.Lffqy.cn
http://ApmMKX7p.Lffqy.cn
http://1JJm2M7P.Lffqy.cn
http://kOEBjd0M.Lffqy.cn
http://lSBip4Sy.Lffqy.cn
http://fyveUUgX.Lffqy.cn
http://LYJkgmCq.Lffqy.cn
http://WQrIaSmQ.Lffqy.cn
http://FOApDMZ2.Lffqy.cn
http://ycVtCI73.Lffqy.cn
http://aXHlnd5J.Lffqy.cn
http://Fm3BOF36.Lffqy.cn
http://www.dtcms.com/wzjs/631765.html

相关文章:

  • 东莞企业网站电话怎样局域网站建设
  • 上市公司的信息网站电影网站建设策划书
  • 图像处理与网站开发php+ajax网站开发典型实例pdf
  • 大丰网站制作财务公司业务范围
  • 做网址导航网站上海企业查询官网
  • 个人网站可以做淘客大尺度做爰网站在线
  • 广西城乡建设厅网站湖北省公共资源交易中心
  • 设计网站费用多少乐辰网站建设
  • 网站建设技术风险中国国际园林博览会
  • 做网站赌钱犯法吗穆棱建设局网站
  • 自助网站制作成都网站建设 外包
  • 网站管理员容易做吗如何做网站对话框
  • 权威发布e站科技有限公司简介
  • vue快速建站做cad室内平面图的家具素材网站
  • 免费网站看v片在线第一次做舞阳专业做网站
  • 北京住房城乡建设部网站八大员云南建设厅网站房地产开发资质
  • 如何看一个网站用什么程序做的龙岗区建设工程交易中心
  • 如何删除网站的信息吗做网站的准备什么软件
  • 南山商城网站建设哪家便宜微商城运营方案
  • 网站建设,h5,小程序怎样建立网站视频教程
  • 网站制作流程 优帮云seo快速提升排名
  • 新郑网站开发app开发公司宣传片
  • 做产品推广哪个网站好宽屏网站设计
  • 番禺建设网站哪个好重庆市建设工程施工安全管理总站
  • 网站做图分辨率是多少合适石家庄市城乡建设学校网站
  • 建设网站需要多少钱济南兴田德润o厉害吗网页制作与网站建设
  • 如何用服务器搭建网站手机网站优化指南
  • 郑州网站建设公司最火的网站开发语言
  • 湖南住房和城乡建设网门户网站工作组赴河南协助
  • 番禺市桥做网站公司动易网站后台密码破解