如何打造一个具有营销效果的模板网站?
摘要:模板网站建设源码,营销型网站建设tfx88,收录网,外国s网站建设共阴极数码管:低电平端接的都是0,高电平端哪里设置为1 ,哪里就亮~ 共阳极数码管与
模板网站建设源码,营销型网站建设tfx88,收录网,外国s网站建设共阴极数码管#xff1a;低电平端接的都是0#xff0c;高电平端哪里设置为1 #xff0c;哪里就亮~ 共阳极数码管与之相反~ 视觉暂留#xff1a; 对于三位的共阴极数码管 第0.01s#xff1a;让数码管0的a段亮#xff0c;其他数码管全灭 Sel0为高电平#xff0c;sel1和sel…共阴极数码管低电平端接的都是0高电平端哪里设置为1 哪里就亮~ 共阳极数码管与之相反~ 视觉暂留 对于三位的共阴极数码管 第0.01s让数码管0的a段亮其他数码管全灭 Sel0为高电平sel1和sel2为低电平 A段为低电平
第0.02s让数码管1的b、c段亮其他数码管全灭 Sel1为高电平sel0和sel2为低电平 B和C段为低电平
第0.03s让数码管2的e段亮其他数码管全灭 Sel2为高电平sel0和sel1为低电平 E段为低电平 数码管动态扫描 所以通过这种方式可以节约引脚~ 抽象原理图 在fpga设计中尽量使用使能时钟去驱动寄存器而不是门控时钟因为门控时钟的质量非常差 使用门控时钟将门控时钟直接作为DFF的工作时钟没有ENA的情况下忽略ENA
使用使能时钟的情况DFF的工作时钟继续全局高质量时钟而将使能时钟作为DFF的使能信号使用
在能使用时序逻辑的情况下尽量使用时序逻辑 顶层模块 module hex8_test(input Clk,input Reset,output [7:0]SEL,output [7:0]SEG);wire [31:0]Disp_Data;hex8_2 hex8_2(Clk,Reset,Disp_Data,SEL,SEG);assign Disp_Data32h12359bdf;endmodule
主模块
module hex8(input Clk,input Reset,input [31:0]Disp_Data,output reg [7:0]SEL,output reg [7:0]SEG//seg[0]对应a,seg[1]对应b~~~~seg[7]对应h);reg clk_1k;reg [14:0]div_cnt;always(posedge Clk or negedge Reset)beginif(!Reset)div_cnt0;else if(div_cnt25000-1)div_cnt0;elsediv_cntdiv_cnt1;endalways(posedge Clk or negedge Reset)beginif(!Reset)clk_1k0;else if(div_cnt25000-1)clk_1k~clk_1k;endreg[2:0]reg_num;always(posedge clk_1k or negedge Reset)beginif(!Reset)reg_num0;else if(reg_num7)reg_num0;elsereg_numreg_num1;endalways(*)begincase(reg_num)0:SEL8b0000_0001;1:SEL8b0000_0010;2:SEL8b0000_0100;3:SEL8b0000_1000;4:SEL8b0001_0000;5:SEL8b0010_0000;6:SEL8b0100_0000;7:SEL8b1000_0000;endcaseendreg[3:0] disp_temp;always(*)begincase(reg_num)7:disp_tempDisp_Data[31:28];6:disp_tempDisp_Data[27:24];5:disp_tempDisp_Data[23:20];4:disp_tempDisp_Data[19:16];3:disp_tempDisp_Data[15:12];2:disp_tempDisp_Data[11:8];1:disp_tempDisp_Data[7:4];0:disp_tempDisp_Data[3:0];endcaseendalways(*)begincase(disp_temp)0:SEG8hc0;1:SEG8hf9;2:SEG8ha4;3:SEG8hb0;4:SEG8h99;5:SEG8h92;6:SEG8h82;7:SEG8hf8;8:SEG8h80;9:SEG8h90;4ha:SEG8h88;4hb:SEG8h83;4hc:SEG8hc6;4hd:SEG8ha1;4he:SEG8h86;4hf:SEG8h8e;endcaseend
endmodule改进后的主模块 module hex8_2(input Clk,input Reset,input [31:0]Disp_Data,output reg [7:0]SEL,output reg [7:0]SEG//seg[0]对应a,seg[1]对应b~~~~seg[7]对应h);reg clk_1k;reg [15:0]div_cnt;always(posedge Clk or negedge Reset)beginif(!Reset)div_cnt0;else if(div_cnt50000-1)div_cnt0;elsediv_cntdiv_cnt1;endalways(posedge Clk or negedge Reset)beginif(!Reset)clk_1k0;else if(div_cnt50000-1)clk_1k1;elseclk_1k0;endreg[2:0]reg_num;always(posedge Clk or negedge Reset)beginif(!Reset)reg_num0;else if(clk_1k)reg_numreg_num1;elsereg_numreg_num;endalways(posedge Clk)begincase(reg_num)7:SEL8b0000_0001;6:SEL8b0000_0010;5:SEL8b0000_0100;4:SEL8b0000_1000;3:SEL8b0001_0000;2:SEL8b0010_0000;1:SEL8b0100_0000;0:SEL8b1000_0000;endcaseendreg[3:0] disp_temp;always(posedge Clk)begincase(reg_num)0:disp_tempDisp_Data[31:28];1:disp_tempDisp_Data[27:24];2:disp_tempDisp_Data[23:20];3:disp_tempDisp_Data[19:16];4:disp_tempDisp_Data[15:12];5:disp_tempDisp_Data[11:8];6:disp_tempDisp_Data[7:4];7:disp_tempDisp_Data[3:0];endcaseendalways(posedge Clk)begincase(disp_temp)0:SEG8hc0;1:SEG8hf9;2:SEG8ha4;3:SEG8hb0;4:SEG8h99;5:SEG8h92;6:SEG8h82;7:SEG8hf8;8:SEG8h80;9:SEG8h90;4ha:SEG8h88;4hb:SEG8h83;4hc:SEG8hc6;4hd:SEG8ha1;4he:SEG8h86;4hf:SEG8h8e;endcaseend
endmodule
测试模块
timescale 1ns / 1psmodule hex8_tb();reg Clk;reg Reset;reg [31:0]Disp_Data;wire [7:0]SEL;wire [7:0]SEG;hex8 hex8(Clk,Reset,Disp_Data,SEL,SEG//seg[0]对应a,seg[1]对应b~~~~seg[7]对应h);initial Clk0;always#10 Clk!Clk;initial beginReset0;Disp_Data32h0000_0000;#201Reset1;#2000Disp_Data32h1234_5678;#10000000Disp_Data32h9abc_def0;#10000000$stop;end
endmodule
时钟质量在FPGA设计中重要的原因
1时钟延迟不确定而且比较大 2使得时钟的波形变差 3驱动能力
