请教:能帮我用VHDL编写一个八位七段数码管动态显示电路吗!真的感谢你!

如题所述

第1个回答  2016-12-13
module LED_8bit (clk,rst,freq_sign, dataout, led_bit);

input clk,rst; //20MHz
input [3:0] freq_sign;

output [7:0] dataout; //8bit位选
reg [7:0] dataout;
output [7:0] led_bit; //段码
reg [7:0] led_bit;

//timer frequency = 64Hz*8
reg [15:0] cnt_16bit;
//for multiple flush frequency
reg [6:0] M128_cnt;

//record switch state
reg [1:0] freq_ctr;

//used for updating data
reg trig_sign;

//record different LED bits
reg [2:0] led_No;

reg [3:0] freq_sign_d1, freq_sign_d2;

//synchronize input switch
always @ (posedge clk)
begin
freq_sign_d1 <= freq_sign;
freq_sign_d2 <= freq_sign_d1;
end

//generate 512Hz timer
always @ (posedge clk or negedge rst)
begin
if (!rst)
cnt_16bit <=16'd0;
else
begin
if (cnt_16bit <16'd39062)
cnt_16bit <= cnt_16bit + 1'b1;
else
cnt_16bit <=16'd0;
end
end

always @ (posedge clk or negedge rst)
begin
if (!rst)
M128_cnt <= 0;
else if(cnt_16bit == 16'd39062)
M128_cnt <= M128_cnt + 1'b1;
end

//according to switch state, choose different flush frequency
always @ ( posedge clk or negedge rst)
begin
if (!rst)
freq_ctr <= 0;
else if (freq_sign_d2[0])
freq_ctr <= 0; //fastest frequency
else if (freq_sign_d2[1])
freq_ctr <= 1; //freq/8
else if (freq_sign_d2[2])
freq_ctr <= 2; //freq/32
else if (freq_sign_d2[3])
freq_ctr <= 3; //freq/128
end

always @ ( posedge clk)
begin
case (freq_ctr)
0:
trig_sign <= (cnt_16bit == 16'd39062);
1:
trig_sign <= (M128_cnt[1:0] == 0) & (cnt_16bit == 16'd39062);
2:
trig_sign <= (M128_cnt[3:0] == 0) & (cnt_16bit == 16'd39062);
3:
trig_sign <= (M128_cnt[5:0] == 0) & (cnt_16bit == 16'd39062);
endcase
end

//led_No ++ when trig_sign = 1
always @ ( posedge clk or negedge rst)
begin
if (!rst)
led_No <= 3'd0;
else if (trig_sign)
led_No <= led_No + 1'b1;
end

//choose led array according to trig_sign
always @ ( posedge clk or negedge rst)
begin
if (!rst)
led_bit <= ~8'b11111111;
else
begin
case (led_No)
3'd0:
led_bit <= ~8'b11111110;
3'd1:
led_bit <= ~8'b11111101;
3'd2:
led_bit <= ~8'b11111011;
3'd3:
led_bit <= ~8'b11110111;
3'd4:
led_bit <= ~8'b11101111;
3'd5:
led_bit <= ~8'b11011111;
3'd6:
led_bit <= ~8'b10111111;
3'd7:
led_bit <= ~8'b01111111;
endcase
end
end

//display character 1~8 for led bit0~7
always @ ( posedge clk or negedge rst)
begin
if (!rst)
dataout <= ~8'b11111111;
else
begin
case (led_No)
3'd0:
dataout <= ~8'b11111001;
3'd1:
dataout <= ~8'b10100100;
3'd2:
dataout <= ~8'b10110000;
3'd3:
dataout <= ~8'b10011001;
3'd4:
dataout <= ~8'b10010010;
3'd5:
dataout <= ~8'b10000010;
3'd6:
dataout <= ~8'b11111000;
3'd7:
dataout <= ~8'b10000000;
endcase
end
end

endmodule
第2个回答  2011-04-06
这个很多书上多有,问题是是这东西肯定有何气压通信接口的,你用什么接口追问

FPGA,器件是cycloneII ep2C35f672C8。usb接口

本回答被网友采纳

请教:能帮我用VHDL编写一个八位七段数码管动态显示电路吗!真的感谢你...
module LED_8bit (clk,rst,freq_sign, dataout, led_bit);input clk,rst; \/\/20MHz input [3:0] freq_sign;output [7:0] dataout; \/\/8bit位选 reg [7:0] dataout;output [7:0] led_bit; \/\/段码 reg [7:0] led_bit;\/\/timer frequency = 64Hz*8 reg [15:0] cn...

用VHDL语言,设计一个数码管显示的程序
七段数码管显示数字需要自定义一个译码器。把二进制数字转换为对应显示的abcdefgh。例如:想显示‘1’需要给七段数码管(共阴极)输入01100000,‘2’需要11011010等等。如果你设计的译码器能够显示0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f的话,计数器直接把输出送给译码器就可以了。

如何用VHDL语言编写数码管的动态显示
clk:in std_logic;---时钟信号 s:out std_logic_vector(7 downto 0);---数码管 q:out std_logic_vector(6 downto 0));---段位 end led;architecture one of led is signal clk1:std_logic;signal clk2:std_logic;---分频 signal cnt:integer:=0;signal cnt1:integer:=0;---计数 ...

跪求:《数字频率计的设计》 原理,方框图,电路图!
本文用VHDL在CPLD器件上实现一种8 b数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。2数字频率计的基本设计原理 数字频率计的原理框图如图1所示。他主要由5个模块组成,...

求高手帮我解释下这段vhdl语言,越详细越好···谢谢!!
type led_addr_type is array(natural range<>) of std_logic_vector(7 downto 0);--定义了一个8位的数组类型 led_addr_type constant led_addr_table:led_addr_type(0 to 7):=("00000001","00000010","00000100","00001000","00010000","00100000","01000000","10000000");--定义了一个...

vhdl 初学者 菜鸟问题 本人用vhdl做一个七段数码管驱动cc4511_百度知 ...
entity cc4511 is --BCD七段数码管 显示驱动的端口描述 port( lt, bi, le: in std_logic;insign :in std_logic_vector(3 downto 0); --输入端口DBCA outsign :out std_logic_vector(6 downto 0)); --输出端口abcdefg end cc4511;architecture logic of cc4511 is begin process(lt,bi...

用VHDL语言设计一个共阴极七段数码管的译码电路,急求大神解答,高分求助...
74LS49是一个7段译码器,其VHDL描述如下:LIBRARYIEEE;USE IEEE.Std_logic_1164.ALL;ENTITYls49 IS PORT(bl: IN Std_logic;bi: IN Std_logic_vector(3 DOWNTO 0);a,b,c,d,e,f,g: OUT Std_logic);ENDls49;ARCHITECTURE behavl_49 OF ls49 IS SIGNAL s: Std_logic_vector(6 DOWNTO ...

VHDL type和subtype的一个小问题
子类型SUBTYPE 只是由TYPE 所定义的原数据类型的一个子集。子类型的定义只在基本数据类型上作一些约束,并没有定义新的数据类型。TYPE 定义的类型包括已在VHDL 预定义程序包中用TYPE 定义过的类型。第2 句是错误的因为不能用SUBTYPE来定义一种新的数据类型。

用VHDL编程实现4位LED数码管动态显示
signal num1 : std_logic;begin a: process(clock,en)variable num : std_logic_vector(3 downto 0);begin if en='1' then --如果en为高电平时,允许七段数码管显示数字 if rising_edge(clock) then if counter=2 then counter<=0;else counter<=counter+1;end if;case counter is ...

基于VHDL语言的多功能数字钟设计
1、设计一个有“时”、“分”、“秒”(23小时59分59秒)显示且有校时功能的电子钟。 2、用中小规模集成电路组成电子钟,并在实验箱上进行组装、调试。 3、画出框图和逻辑电路图。 4 、功能扩展: (1)闹钟系统 (2)整点报时。在59分51秒、53秒、55秒、57秒输出750Hz音频信号,在59分59秒时,输出1000Hz...

相似回答