本教程将教给大家如何运用北邮版FPGA开发板上的2个七段数码管。 七段数码管是电子设计中常用的一种LED显现器,能够显现数字0-9,以及一些其他符号,七段数码管依据内部发光二极管的衔接方式,能够分为共阴极和共阳极两种。 七段数码管中,七个LED的编号次第是固定的,如下图所示,点亮LED的位置不同,显现的符号也就不同。 在实践应用中,从节约端口数量、降低成本等角度思索,经常将多个七段数码管并联,采用动态扫描的方式,经过位选信号控制各个七段数码管轮番点亮,应用人眼视觉暂留现象,完成多个七段数码管同时显现信息的效果。 七段数码管的动态扫描,用单片经过C言语编程时比较复杂,但在FPGA中,应用Verilog言语自身的并行机制,这件事倒变得简单了。 下图为北邮版FPGA开发板中2个七段数码管的衔接方式,这2个七段数码管是并联关系,但位线相对独立,经过T2和T3控制2个七段数码管的阴极公共端,当T2=1时,允许对应的七段数码管工作。 运用Verilog操作2个七段数码管的例程如下,这段代码是经过拨码开关来控制七段数码管显现0-9和A-F的,用拨码开关的低4位和高4位拨码分别控制2个七段数码管,读者可仿照FPGA入门--树立第一个工程,自己来树立新的工程完成相关操作。 module seg_scan(clk_50M,rst_button, switch, digit_seg, digit_cath); input clk_50M; //板载50M晶振 input rst_button; input [7:0] switch; output reg [7:0] digit_seg; //七段数码管的段选端 output [1:0] digit_cath; //2个数码管的片选端 wire reset; //复位按键 assign reset = rst_button; //计数分频,经过读取32位计数器div_count不同位数的上升沿或降落沿来取得频率不同的时钟 reg [31:0] div_count; always @(posedge clk_50M,posedge reset) begin if(reset) div_count <= 0; //假如按下复位按键,计数清零 else div_count <= div_count + 1; end //拨码开关控制数码管显现,每4位拨码开关控制一个七段数码管 wire [7:0] digit_display; assign digit_display = switch; wire [3:0] digit; always @(*) //对一切信号敏感 begin case (digit) 4'h0: digit_seg <= 8'b11111100; //显现0~F 4'h1: digit_seg <= 8'b01100000; 4'h2: digit_seg <= 8'b11011010; 4'h3: digit_seg <= 8'b11110010; 4'h4: digit_seg <= 8'b01100110; 4'h5: digit_seg <= 8'b10110110; 4'h6: digit_seg <= 8'b10111110; 4'h7: digit_seg <= 8'b11100000; 4'h8: digit_seg <= 8'b11111110; 4'h9: digit_seg <= 8'b11110110; 4'hA: digit_seg <= 8'b11101110; 4'hB: digit_seg <= 8'b00111110; 4'hC: digit_seg <= 8'b10011100; 4'hD: digit_seg <= 8'b01111010; 4'hE: digit_seg <= 8'b10011110; 4'hF: digit_seg <= 8'b10001110; endcase end //经过读取32位计数器的第10位的上升沿得到分频时钟,用于数码管的扫描 reg segcath_holdtime; always @(posedgediv_count[10], posedge reset) begin if(reset) segcath_holdtime <= 0; else segcath_holdtime <= ~segcath_holdtime; end //7段数码管位选控制 assign digit_cath ={segcath_holdtime, ~segcath_holdtime}; // 相应位数码管段选信号控制 assign digit =segcath_holdtime ? digit_display[7:4] : digit_display[3:0]; endmodule 在这里,我们并没有给出管束分配表,也希望读者能自己动脑来完成,北邮版FPGA开发板的管脚对照表如下表所示。 迎接另一个晨曦,带来全新空气 气息改动情味不变,茶香飘满友谊 我家大门常翻开,开放怀抱等你 拥抱过就有了默契,你会爱上这里 不论远近都是客人请不用客气 相约好了在一同,我们欢送你 我家大门常翻开,开怀容纳天地 岁月绽放青春笑容,迎接这个日期 天大地大都是朋友请不用客气 画意诗情带笑意,只为等候你 |