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

完备的网站建设推广商城微网站建设

完备的网站建设推广,商城微网站建设,岳阳网站界面设计,多用户商城网站开发文章目录 前言实验手册一、实验目的二、实验原理1#xff0e;理论原理2#xff0e;硬件原理 三、系统架构设计四、模块说明1#xff0e;模块端口信号列表dig_driver(数码管驱动模块)key(按键消抖模块)top(顶层模块) 2#xff0e;状态转移图3#xff0e;时序图五、仿真波形… 文章目录 前言实验手册一、实验目的二、实验原理1理论原理2硬件原理 三、系统架构设计四、模块说明1模块端口信号列表dig_driver(数码管驱动模块)key(按键消抖模块)top(顶层模块) 2状态转移图3时序图五、仿真波形图仿真代码 六、代码编写dig_driver(数码管驱动模块)key(按键消抖模块)top(顶层模块) 七、引脚分配八、板级验证效果拍照或录制视频 前言 利用动态数码管的原理对秒表计时器的实现 实验手册 一、实验目的 用按键控制秒表的启动、停止和重置 2.用两个数码管显示秒表的分 用两个数码管显示秒表的秒 用两个数码管显示秒表的毫秒的百位和十位数值。 二、实验原理 1理论原理 在数码管中由于有位选信号和段选信号的存在我们无法做到将数码管同时进行变换所以我们通过快速的切换和刷新使得我们看到的是连续的多个数码管显示结果。通过控制位选信号和段选信号可以实现不同的数字、字母或符号的动态显示。 用已经消抖的按键控制秒表计数器的停止、启动、复位。 2硬件原理 开发板上的数码管数码管位选和段选信号都是低电平有效。 位选信号根据需要的显示位数进行生成该实验所用的开发板可用6个位选信号它们用于选择要显示的数码管。 段选信号根据需要的显示内容进行生成它们用于控制数码管的七段LED灯以及小数点LED灯的亮灭状态该实验所用的开发板可用8个段选信号。 三、系统架构设计 由于数码管无法同时改变状态我在此处采用了0.1ms的计数器对数码管进行刷新人眼不会察觉到闪烁。 在取seg的值时我采用了两个计数器一个是作为数码管的最小数值10ms一个是最大数值60min然后对60min计数器中的计数值取余、取整分离出分、秒、毫秒的个位和十位。 我还设置两个按键控制该秒表的启动、停止、以及复位按键1控制启动再次按下则停止按键4控制秒表复位。 四、模块说明 1模块端口信号列表 dig_driver(数码管驱动模块) 端口信号信号类型信号名称信号作用inputwireclk时钟信号inputwirerst_n复位信号inputwire[1:0]key_in消抖后稳定按键信号outputreg[5:0]sel6位位选信号outputreg[7:0]seg8位段选信号 key(按键消抖模块) 端口信号信号类型信号名称信号作用inputwireclk时钟信号inputwirerst_n复位信号inputwire[1:0]key_in2位输入按键信号outputregkey_out输出稳定按键信号 top(顶层模块) 端口信号信号类型信号名称信号作用inputwireclk时钟信号inputwirerst_n复位信号inputwire[1:0]key_in2位输入按键信号outputreg[5:0]sel6位位选信号outputreg[7:0]seg8位段选信号 2状态转移图 无 3时序图 五、仿真波形图 仿真代码 timescale 1ns/1ns define CYCLE 20 module tb ( );//激励信号/* input */ reg clk ;/* input */ reg rst_n ;/* input */ reg [3:0] key_in ; //响应信号/* output */ wire [7:0] seg ; //段选信号/* output */ wire [5:0] sel ; //位选信号 //重定义参数defparam top.u_dig_driver.MAX_10ms 5,top.u_dig_driver.MAX_0_1ms 1,top.u_dig_driver.MAX_60min 36000,top.u_key.CNT_MAX 1,top.u_dig_driver.sec_unit 600,top.u_dig_driver.ms_unit 10;//时钟信号always #(CYCLE/2) clk ~clk; //激励开始initial beginclk 1b0;rst_n 1b0;key_in 4b1111;#3rst_n 1b1;#10key_in 4b1110;#(CYCLE*100)key_in 4b1111;#(top.u_dig_driver.MAX_60min*CYCLE)key_in 4b1110;#(CYCLE*100)key_in 4b1111;#(top.u_dig_driver.MAX_60min/2)key_in 4b1111;#(CYCLE)key_in 4b0111;#(CYCLE*100)key_in 4b1111;#(CYCLE*100)$stop(2);end//实例化toptop (/* input */ .clk (clk ) ,/* input */ .rst_n(rst_n) ,/* output reg [7:0] */ .seg (seg ) , //段选信号/* output reg [5:0] */ .sel (sel ) //位选信号 );endmodule在这个仿真波形图中我们可以看到位选信号在我设置的频率中不停来回切换在切换中计数器10ms每计数一次前两位位选信号加一直到加到第二位位选信号9为止而中间两位的位选信号则是加到第四位位选信号6为止与预期效果一致。 六、代码编写 dig_driver(数码管驱动模块) module dig_driver (input clk ,input rst_n ,input [3:0] key_out ,output reg [7:0] seg , //段选信号output reg [5:0] sel //位选信号 ); wire [10:0] min; wire [10:0] sec; wire [10:0] ms ;parameter MAX_10ms 32d499_999; reg [31:0] cnt_10ms; wire add_10ms; wire end_10ms;parameter MAX_0_1ms 32d4_999; reg [31:0] cnt_0_1ms;parameter MAX_60min 32d359_999; reg [31:0] cnt_60min;parameter sec_unit 10d6000,ms_unit 10d100;reg [4:0] seg_value;//seg的状态寄存器 parameter ZERO 8b1100_0000 ,ONE 8b1111_1001 ,TWO 8b1010_0100 ,THREE 8b1011_0000 ,FOUR 8b1001_1001 ,FIVE 8b1001_0010 ,SIX 8b1000_0010 ,SEVEN 8b1111_1000 ,EIGHT 8b1000_0000 ,NINE 8b1001_0000 ;//parameter sel_0 6b111110, // sel_1 6b111101, // sel_2 6b111011, // sel_3 6b110111, // sel_4 6b101111, // sel_5 6b011111;//1ms计数器 always (posedge clk or negedge rst_n) beginif (!rst_n) begincnt_10ms 1d0;endelse if (cnt_10ms MAX_10ms) begincnt_10ms 1d0;endelse if (key_out[0]) begincnt_10ms cnt_10ms 1;endelse if (key_out[1]) begincnt_10ms cnt_10ms ;end end assign add_10ms 1b1; assign end_10ms cnt_10ms MAX_10ms;//60min计数器 always (posedge clk or negedge rst_n) beginif (!rst_n) begincnt_60min 1d0;endelse if (end_10ms) begincnt_60min cnt_60min 1;endelse if (cnt_60min MAX_60min) begincnt_60min 1d0;endelse begincnt_60min cnt_60min;end end //对计数值进行除和取余获得相应的值 assign min cnt_60min/sec_unit; assign sec cnt_60min%sec_unit/ms_unit; assign ms cnt_60min%sec_unit%ms_unit; //0.1ms计数器 always (posedge clk or negedge rst_n) beginif (!rst_n) begincnt_0_1ms 1d0;endelse if (cnt_0_1ms MAX_0_1ms) begincnt_0_1ms 1d0;endelse begincnt_0_1ms cnt_0_1ms 1;end end //该板块无法同时变化只能依次闪烁该方法为依次闪烁的间隔人肉眼无法判断 0.1ms always (posedge clk or negedge rst_n) beginif (!rst_n) beginsel 6b011_111;endelse if (cnt_0_1ms MAX_0_1ms) beginsel {sel[0],sel[5:1]};endelse beginsel sel ;end end//每位位选信号的段选信号的值 always (posedge clk or negedge rst_n) beginif (!rst_n) beginseg_value 5d0;endcase (sel) 6b011111: seg_value ms%10;6b101111: seg_value ms/10;6b110111: seg_value sec%10;6b111011: seg_value sec/10;6b111101: seg_value min%10;6b111110: seg_value min/10; default: seg_value 5d0;endcase end//根据seg_value显示数码管 always (posedge clk or negedge rst_n) beginif (!rst_n) beginseg 8b11111111;endcase (seg_value)5d0:begin seg ZERO ; end5d1:begin seg ONE ; end5d2:begin seg TWO ; end5d3:begin seg THREE ; end5d4:begin seg FOUR ; end5d5:begin seg FIVE ; end5d6:begin seg SIX ; end5d7:begin seg SEVEN ; end5d8:begin seg EIGHT ; end5d9:begin seg NINE ; enddefault: seg seg; endcase end endmodulekey(按键消抖模块) module key (input wire clk,input wire rst_n,input wire key_in,output reg key_out );parameter CNT_MAX 20d999_999; //20ms计数reg [19:0] cnt_20ms; reg key_flag; //20ms消抖 always(posedge clk or negedge rst_n)if(!rst_n)cnt_20ms20b0;else if(key_in1b1)cnt_20ms20d0;else if(cnt_20msCNT_MAX)cnt_20msCNT_MAX;elsecnt_20mscnt_20ms20d1; //取单个脉冲信号 always(posedge clk or negedge rst_n)if(!rst_n)key_flag1b0;else if(cnt_20ms(CNT_MAX-20d1))key_flag1b1;elsekey_flag1b0; //有效信号 always (posedge clk or negedge rst_n)beginif(!rst_n)beginkey_out 1b0;endelse if(key_flag 1b1)key_out ~key_out;elsekey_out key_out; endendmoduletop(顶层模块) module top (input clk,input rst_n,input [3:0] key_in,output [7:0] seg , //段选信号output [5:0] sel //位选信号 );wire [3:0]key_flag;wire [3:0]key_out ;key u_key//key_fsm (/* input wire */ .clk (clk ) , /* input wire */ .rst_n (rst_n ) , /* input wire */ .key_in (key_in[0]) , /* output reg */ .key_out (key_out[0]) );key u_key1 (/* input wire */ .clk (clk ) , /* input wire */ .rst_n (rst_n ) , /* input wire */ .key_in (key_in[1]) , /* output reg */ .key_out (key_out[1]) );key u_key2 (/* input wire */ .clk (clk ) , /* input wire */ .rst_n (rst_n ) , /* input wire */ .key_in (key_in[2]) , /* output reg */ .key_out (key_out[2]) );key u_key3 (/* input wire */ .clk (clk ) , /* input wire */ .rst_n (rst_n ) , /* input wire */ .key_in (key_in[3]) , /* output reg */ .key_out (key_out[3]) ); dig_driver u_dig_driver (/* input */ .clk (clk ) ,/* input */ .rst_n (rst_n ) ,/* input [3:0] */ .key_out (key_out) ,/* output reg [7:0] */ .seg (seg) , //段选信号/* output reg [5:0] */ .sel (sel) //位选信号 );endmodule七、引脚分配 八、板级验证效果拍照或录制视频
http://www.zqtcl.cn/news/892592/

相关文章:

  • 自己做的网站如何在网络上展示wordpress 手动采集
  • 上海做网站要多少钱wordpress教程app
  • 房地产设计网站沈阳人流哪个医院好安全
  • 贵阳专业做网站微信小程序商城源代码
  • seo建站收费地震郑州做网站开发销售
  • 东莞整站优化推广公司找火速建设企业网站要多少钱
  • 网站备案 两个域名东莞保安公司联系电话
  • 网站专业制作公司律师如何在网上推广
  • 免费培训seo网站一直免费的服务器下载安装
  • 广州h5网站制作公司做竞价网站 要注意什么
  • 太原网站搭建推广id怎么编辑wordpress
  • 网站开发网站设计制作广告设计与制作基础知识
  • 企业建设H5响应式网站的5大好处网站备案后经营
  • 网站数据流分析怎么做河北搜索引擎推广方法
  • 哈尔滨网站建设咨询辽宁建设工程信息网怎么看项目经理是不是被锁住
  • 成立做网站的公司搭建网站有费用吗
  • 标志设计说明案例北京网站优化seo
  • 国外app设计网站佛山网站推广市场
  • 北京矿建建设集团有限公司 网站科技软件下载
  • 公司建网站要多少钱wordpress轮播框
  • 怎么看一个网站什么语言做的全网最新首码项目
  • 深圳网站建设ue网站空间和流量
  • 网站前端设计要做什么游仙建设局官方网站
  • 大型门户网站建设哪家好进一步加大网站集约化建设力度
  • 网站里面那些工作是做晚上兼职的钱包网站建设策划
  • 网站开发实现的环境自豪地采用wordpress 怎么去掉
  • ic商城网站建设网站备案关闭影响排名
  • qq官方网站进入wordpress调用文章某个分类
  • 南充网站建设设计略奥企业网站管理系统怎么修改密码
  • 网站建设里的知识360云主机可以建设网站吗