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

网站设计的优缺点湖北城乡和建设官方网站

网站设计的优缺点,湖北城乡和建设官方网站,嘉鱼网站建设优化,百度知道首页登录#x1f389;欢迎来到FPGA专栏~数码管动态扫描 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒#x1f379; ✨博客主页#xff1a;小夏与酒的博客 #x1f388;该系列文章专栏#xff1a;FPGA学习之旅 文章作者技术和水平有限#xff0c;如果文中出现错误#xff0c;希望大家能指正… 欢迎来到FPGA专栏~数码管动态扫描 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒 ✨博客主页小夏与酒的博客 该系列文章专栏FPGA学习之旅 文章作者技术和水平有限如果文中出现错误希望大家能指正 欢迎大家关注 ❤️ 目录-数码管动态扫描 一、效果演示二、电路结构三、代码详解四、AV4开发板演示五、Spirit_V2开发板演示 一、效果演示 Spirit_V2开发板按键控制数码管 AV4开发板数码管动态扫描 二、电路结构 上图电路结构的子模块介绍 名称功能描述divider分频产生1KHz的扫描时钟shift66位循环移位寄存器MUX6数据输入选择MUX2使能选择LUT数据译码器 由于各子模块的代码量不会特别大因此将在一个文件中编写。 三、代码详解 先上代码 smg_HEX.v: module smg_HEX(input Clk, //50Minput Rst_n, //复位input En, //数码管显示使能input [23:0] disp_data, //6 × 4 246个数码管数据格式为hex总共输入24位output reg [7:0] seg, //数码管段选output [5:0] sel //数码管位选数码管选择 );reg [5:0]sel_r;//--------分频器--------reg [14:0]divider_cnt;//25000-1reg clk_1K;reg [3:0]data_tmp;//待显示数据缓存//1KHz分频计数器always(posedge Clk or negedge Rst_n)beginif(!Rst_n)divider_cnt 15d0;else if(!En)divider_cnt 15d0;else if(divider_cnt 24999)divider_cnt 15d0;elsedivider_cnt divider_cnt 1b1;end//1KHz扫描时钟always(posedge Clk or negedge Rst_n)beginif(!Rst_n)clk_1K 1b0;else if(divider_cnt 24999)clk_1K ~clk_1K;elseclk_1K clk_1K;end//--------6位循环移位寄存器-------- always(posedge clk_1K or negedge Rst_n)beginif(!Rst_n)sel_r 6b000_001;else if(sel_r 6b100_000)sel_r 6b000_001;elsesel_r sel_r 1;end //--------6选1多路器-------- always(*)begincase(sel_r)6b00_0001:data_tmp disp_data[3:0];6b00_0010:data_tmp disp_data[7:4];6b00_0100:data_tmp disp_data[11:8];6b00_1000:data_tmp disp_data[15:12];6b01_0000:data_tmp disp_data[19:16];6b10_0000:data_tmp disp_data[23:20];default:data_tmp 4b0000;endcaseend//--------LUT-------- always(*)begincase(data_tmp)4h0:seg 8hc0;4h1:seg 8hf9;4h2:seg 8ha4;4h3:seg 8hb0;4h4:seg 8h99;4h5:seg 8h92;4h6:seg 8h82;4h7:seg 8hf8;4h8:seg 8h80;4h9:seg 8h90;4ha:seg 8h88;4hb:seg 8h83;4hc:seg 8hc6;4hd:seg 8ha1;4he:seg 8h86;4hf:seg 8h8e;endcaseend//--------2选1多路器-------- assign sel (En)?(~sel_r):6b111_111;endmodule 需要注意端口列表 module smg_HEX(input Clk, //50Minput Rst_n, //复位input En, //数码管显示使能input [23:0] disp_data, //6 × 4 246个数码管数据格式为hex总共输入24位output reg [7:0] seg, //数码管段选output [5:0] sel //数码管位选数码管选择 );En使能信号只有在高电平时数码管显示。加入使能信号端口是为了低功耗设计的实现。 接下来做仿真测试 smg_HEX_tb.v timescale 1ns/1ns define clock_period 20module smg_HEX_tb;reg Clk; //50Mreg Rst_n;reg En; //数码管显示使能reg [23:0] disp_data;wire [7:0] seg; //数码管段选wire [5:0] sel; //数码管位选数码管选择smg_HEX Usmg_HEX(.Clk(Clk), //50M.Rst_n(Rst_n),.En(En), //数码管显示使能.disp_data(disp_data),.seg(seg), //数码管段选.sel(sel) //数码管位选数码管选择);initial Clk 1;always#(clock_period / 2) Clk ~Clk;initial beginRst_n 1b0;En 1;disp_data 24h123456;#(clock_period*20);Rst_n 1b1;#(clock_period*20);#20000000;disp_data 24h89abcd;#20000000;$stop;endendmodule 仿真结果 RTL 四、AV4开发板演示 上述代码为数码管动态扫描的驱动代码使用时需要添加上层模块。 AV4开发板开箱视频【FPGA-AV4】火热售卖中欢迎大家抢购小月电子~含购买链接。 在AV4开发板上的实现主要使用到了ISSP调试工具ISSP的ip核创建 创建一个新的ip核 选择ISSP选择好Verilog HDL和路径 该项目只需要用到source端口 下一步 完成 issp.v: // megafunction wizard: %In-System Sources and Probes%VBB% // GENERATION: STANDARD // VERSION: WM1.0 // MODULE: altsource_probe // // File Name: issp.v // Megafunction Name(s): // altsource_probe // // Simulation Library Files(s): // altera_mf // // ************************************************************ // THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! // // 13.0.0 Build 156 04/24/2013 SJ Full Version // ************************************************************//Copyright (C) 1991-2013 Altera Corporation //Your use of Altera Corporations design tools, logic functions //and other software and tools, and its AMPP partner logic //functions, and any output files from any of the foregoing //(including device programming or simulation files), and any //associated documentation or information are expressly subject //to the terms and conditions of the Altera Program License //Subscription Agreement, Altera MegaCore Function License //Agreement, or other applicable license agreement, including, //without limitation, that your use is for the sole purpose of //programming logic devices manufactured by Altera and sold by //Altera or its authorized distributors. Please refer to the //applicable agreement for further details.module issp (probe,source);input probe;output [23:0] source;endmodule// // CNX file retrieval info // // Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING Cyclone IV E // Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all // Retrieval info: CONSTANT: ENABLE_METASTABILITY STRING NO // Retrieval info: CONSTANT: INSTANCE_ID STRING NONE // Retrieval info: CONSTANT: PROBE_WIDTH NUMERIC 0 // Retrieval info: CONSTANT: SLD_AUTO_INSTANCE_INDEX STRING YES // Retrieval info: CONSTANT: SLD_INSTANCE_INDEX NUMERIC 0 // Retrieval info: CONSTANT: SOURCE_INITIAL_VALUE STRING 0 // Retrieval info: CONSTANT: SOURCE_WIDTH NUMERIC 24 // Retrieval info: USED_PORT: probe 0 0 0 0 INPUT NODEFVAL probe // Retrieval info: USED_PORT: source 0 0 24 0 OUTPUT NODEFVAL source[23..0] // Retrieval info: CONNECT: probe 0 0 0 0 probe 0 0 0 0 // Retrieval info: CONNECT: source 0 0 24 0 source 0 0 24 0 // Retrieval info: GEN_FILE: TYPE_NORMAL issp.v TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL issp.inc TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL issp.cmp TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL issp.bsf TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL issp_inst.v TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL issp_bb.v TRUE // Retrieval info: LIB_FILE: altera_mf 将该ip核添加到项目文件中并在顶层文件中例化模块 module smg_ISSP(input Clk, //50Minput Rst_n, //复位output [7:0] seg, //数码管段选output [5:0] sel //数码管位选数码管选择 );wire [23:0]disp_data;smg_HEX Usmg_HEX(.Clk(Clk), //50M.Rst_n(Rst_n), //复位.En(1b1), //数码管显示使能.disp_data(disp_data), //6 × 4 246个数码管数据格式为hex总共输入24位.seg(seg), //数码管段选.sel(sel) //数码管位选数码管选择);issp Uissp(.probe(),.source(disp_data));endmodule 将上述程序配置好之后数码管显示如下 当程序配置好之后使用ISSP调试工具打开步骤 在Tools中打开 未发现设备先点击ok 在Hardware中选择对应的设备 将数据显示格式调整为hex格式 将数据改为123456 测试结果 将数据改为ABCDEF 测试结果 五、Spirit_V2开发板演示 Spirit_V2开发板介绍【FPGA-Spirit_V2】小精灵V2开发板初使用。 接下来在Spirit_V2开发板上实验通过按键控制数码管亮灭实现简单的低功耗设计 先上RTL视图便于理解编程思路 按键信号经过按键消抖模块之后有效信号进入数码管数据和使能模块最后信号进入数码管驱动模块。 按键消抖模块的详细讲解【FPGA零基础学习之旅#10】按键消抖模块设计与验证一段式状态机实现。 接下来为各模块的代码 KeyFilter.v: // //模块按键消抖模块 //key_state输出消抖之后按键的状态 //key_flag按键消抖结束时产生一个时钟周期的高电平脉冲 // module KeyFilter(input Clk,input Rst_n,input key_in,output reg key_flag,output reg key_state );//按键的四个状态localparamIDLE 4b0001,FILTER1 4b0010,DOWN 4b0100,FILTER2 4b1000;//状态寄存器reg [3:0] curr_st;//边沿检测输出上升沿或下降沿wire pedge;wire nedge;//计数寄存器reg [19:0]cnt;//使能计数寄存器reg en_cnt;//计数满标志信号reg cnt_full;//计数满寄存器//------边沿检测电路的实现------//边沿检测电路寄存器reg key_tmp0;reg key_tmp1;//边沿检测always(posedge Clk or negedge Rst_n)beginif(!Rst_n)beginkey_tmp0 1b0;key_tmp1 1b0;endelse beginkey_tmp0 key_in;key_tmp1 key_tmp0;end endassign nedge (!key_tmp0) (key_tmp1);assign pedge (key_tmp0) (!key_tmp1);//------状态机主程序------ //状态机主程序always(posedge Clk or negedge Rst_n)beginif(!Rst_n)begincurr_st IDLE;en_cnt 1b0;key_flag 1b0;key_state 1b1;endelse begincase(curr_st)IDLE:beginkey_flag 1b0;if(nedge)begincurr_st FILTER1;en_cnt 1b1;endelsecurr_st IDLE;endFILTER1:beginif(cnt_full)beginkey_flag 1b1;key_state 1b0;curr_st DOWN;en_cnt 1b0;end else if(pedge)begincurr_st IDLE;en_cnt 1b0;endelsecurr_st FILTER1;endDOWN:beginkey_flag 1b0;if(pedge)begincurr_st FILTER2;en_cnt 1b1;endelsecurr_st DOWN;endFILTER2:beginif(cnt_full)beginkey_flag 1b1;key_state 1b1;curr_st IDLE;en_cnt 1b0;end else if(nedge)begincurr_st DOWN;en_cnt 1b0;endelsecurr_st FILTER2;enddefault:begincurr_st IDLE;en_cnt 1b0;key_flag 1b0;key_state 1b1;endendcaseendend//------20ms计数器------ //20ms计数器//Clk 50_000_000Hz//一个时钟周期为20ns//需要计数20_000_000 / 20 1_000_000次always(posedge Clk or negedge Rst_n)beginif(!Rst_n)cnt 20d0;else if(en_cnt)cnt cnt 1b1;elsecnt 20d0;endalways(posedge Clk or negedge Rst_n)beginif(!Rst_n)cnt_full 1b0;else if(cnt 999_999)cnt_full 1b1;elsecnt_full 1b0;endendmodule DataAndEn.v: module DataAndEn(input Clk,input Rst_n,input key_flag,input key_state,output reg [23:0] disp_data,output reg En );always(posedge Clk or negedge Rst_n)beginif(!Rst_n)En 1b0;else if(key_state 1b0)En 1b1;else En 1b0;endalways(posedge Clk or negedge Rst_n)beginif(!Rst_n)disp_data 24h0;else if(!key_state)disp_data 24h89abcd;else;endendmodule 数码管驱动模块的代码保持不变接下来为顶层模块 smg_top.v: module smg_top(input Clk, input Rst_n, input key_in, output [7:0] seg, output [5:0] sel );wire key_flag;wire key_state;wire En;wire [23:0] disp_data;KeyFilter UKeyFilter(.Clk(Clk),.Rst_n(Rst_n),.key_in(key_in),.key_flag(key_flag),.key_state(key_state));DataAndEn UDataAndEn(.Clk(Clk),.Rst_n(Rst_n),.key_flag(key_flag),.key_state(key_state),.disp_data(disp_data),.En(En));smg_HEX Usmg_HEX(.Clk(Clk), .Rst_n(Rst_n), .En(En), .disp_data(disp_data),.seg(seg), .sel(sel) );endmodule 结尾 ❤️ 感谢您的支持和鼓励 您可能感兴趣的内容【FPGA】串口通信讲解-状态机判断数据值【Python】串口通信-与FPGA、蓝牙模块实现串口通信PythonFPGA 【Arduino TinyGo】【最新】使用Go语言编写Arduino-环境搭建和点亮LED灯【全网首发开源教程】【Labview机器人仿真与控制】Labview与Solidworks多路支配关系-四足爬行机器人仿真与控制
http://www.hkea.cn/news/14428935/

相关文章:

  • 开封景区网站建设方案北京平台网站建设
  • 儿童网站开发 论文现在做网站用的软件
  • 重庆镇海seo整站优化价格长沙室内设计学校
  • 可以免费打广告的网站中国建设银行信用卡网站
  • 做流量网站要做哪一种Wordpress必备chaj
  • 雄安免费网站建设wordpress做h5
  • 环保行业网站怎么做公司官网设计制作
  • 外贸网站建站费用北京做网站要多少钱
  • 周口网站设计制作自己可以学做网站吗
  • 网络优化首先要有网站长沙网站建设kaodezhu
  • 用手机做网站视频我在学校志愿队做网站的经历
  • 网站建设哪家有实力嘉兴类网站系统总部
  • 网站编辑应该怎么做西安做网站陕西必达
  • 花店网站设计静态网站培训
  • 做区块链网站的公司公司简介范本
  • 如何在社交网站做销售西安建设工程信息网站
  • 哪里有网站开发公司邢台龙天网络科技有限公司
  • 怎么做网页版手机版网站微信的微网站模板下载
  • 温州网站排名优化公司重庆网站制作多少钱
  • 模版用iis在自己家电脑上做网站wordpress是用什么语言
  • 建设银行网站登录不软件技术大专出来都去干嘛了
  • 网站登录页面怎么做网站预算
  • 正定网站制作长沙58同城招聘网找工作招聘信息
  • 做棋牌网站建设多少钱昆明网站建设优化技术
  • 白宫网站 wordpress开源门户网站
  • 在线crm网站建站wordpress简单统计插件
  • 网站建设的功能需求网站前端设计招聘
  • 推广做任务 有哪些网站团购网站切换城市js特效代码
  • 计算机网络网站开发建企业网站
  • 常州网站推广软件厂家酷家乐设计家官网