用FPGA实现的七段数码管vhdl代码

合集下载

用FPGA实现的七段数码管vhdl代码

用FPGA实现的七段数码管vhdl代码

具体设计:Vhd代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity sevenled_vhd isPort (input : in STD_LOGIC_VECTOR (3 downto 0);led : out STD_LOGIC_VECTOR (7 downto 0)); end sevenled_vhd;architecture Behavioral of sevenled_vhd isbeginled<= "11000000" when input="0000" else -- 0"11111001" when input="0001" else -- 1"10100100" when input="0010" else -- 2"10110000" when input="0011" else -- 3"10011001" when input="0100" else -- 4"10010010" when input="0101" else -- 5"10000010" when input="0110" else -- 6"11111000" when input="0111" else -- 7"10000000" when input="1000" else -- 8"10010000" when input="1001" else -- 9"10001000" when input="1010" else -- A"10000011" when input="1011" else -- b"10100111" when input="1100" else -- c"10100001" when input="1101" else -- d"10000110" when input="1110" else -- E"10001110"; -- F end Behavioral;管脚约束:Net "led<7>" LOC=N19;Net "led<6>" LOC=N15;Net "led<5>" LOC=R20;Net "led<4>" LOC=R18;Net "led<3>" LOC=U20;Net "led<2>" LOC=T18;Net "led<1>" LOC=U18;Net "led<0>" LOC=W20;Net "input<3>" LOC=F18;Net "input<2>" LOC=G20;Net "input<1>" LOC=J18;Net "input<0>" LOC=L18;综合结果:仿真:wait for 100ms; --0input<="0000";wait for 100ms; --1input<="0001";wait for 100ms; --2input<="0010";wait for 100ms; --3input<="0011";wait for 100ms; --4input<="0100";wait for 100ms; --5input<="0101";wait for 100ms; --6input<="0110";wait for 100ms; --7input<="0111";wait for 100ms; --8input<="1000";wait for 100ms; --9input<="1001";wait for 100ms; --Ainput<="1010";wait for 100ms; --Binput<="1011";wait for 100ms; --Cinput<="1100";wait for 100ms; --Dinput<="1101";wait for 100ms; --Einput<="1110";wait for 100ms; --Finput<="1111";烧录程序结果扩展板由8个数码管,选择其中一个显示。

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)
信号源模块的时钟选择为 1KHZ,第一个实验则有一位数码管重重复显示 0-9 的数,第二个实验则八位数码管显示了学号后8 位。其部分结果如下所示:
(1)一位数码管显示0-9:
(2)八位数码管显示学号后八位: 七、心得体会
七段码管位选输入信号 七段码管位选输入信号 七段码管位选输入信号
五、 实验步骤
1、打开 QUARTUSII 软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL 编辑器对话框。 3、按照实验原理和自己的想法,在VHDL 编辑窗口编写VHDL 程序。其 程序如下所示:
(1)一位数码管显示0-9:
电子科技大学成都学院学院
标准实验报告
(实验)课程名称 数字电路 EDA 设计与应用
姓名 乱弹的枇杷 学号 专业 指导教师
一、 实验名称 数码管显示(一位数码管显示 0-9,八位数码管显示学号
后八位)
二、 实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、掌握 VHDL 的 CASE 语句及多层次设计方法。
信号名称对应fpga管脚名说明7segaf13七段码管段输入信号7segbf14七段码管段输入信号7segcf15七段码管段输入信号7segde15七段码管段输入信号7segef16七段码管段输入信号7segff17七段码管段输入信号7segge18七段码管段输入信号7segdpf18七段码管dp段输入信号7segsel0g18七段码管位选输入信号7segsel1g17七段码管位选输入信号7segsel2g16七段码管位选输入信号实验步骤1打开quartusii软件新建一个工程
信号名称 7SEG-A 7SEG-B 7SEG-C 7SEG-D 7SEG-E 7SEG-F 7SEG-G 7SEG-DP 7SEG-SEL0 7SEG-SEL1 7SEG-SEL2

vhdl_4位七段数码管

vhdl_4位七段数码管

基于vhdl 实现的4位七段数码管显示显示内容为4位16进制数,数码管共阴极连接。

有置数及自加一功能。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE ieee.std_logic_unsigned.all;ENTITY counter0000_ffff ISPORT ( clk, en :in STD_LOGIC;set_ch:in std_logic_vector( 1 downto 0);set_num :in std_logic_vector( 3 downto 0);data : out STD_LOGIC_VECTOR(6 DOWNTO 0);sel : out STD_LOGIC_VECTOR(2 DOWNTO 0) );END counter0000_ffff;architecture behave of counter0000_ffff issignal num,num1,num2,num3,num4: std_logic_vector (3 downto 0); signal num_counter:std_logic;begina:process( clk )variable cc: integer range 0 to 3:=0;beginif( clk = '0' ) thencase cc iswhen 0 => num <= num2;sel <= "011";cc:=1;when 1 => num <= num3;sel <= "010";cc:=2;when 2 => num <= num4;sel <= "001";cc:=3;when 3 => num <= num1;sel <= "000";cc:=0;end case;case num iswhen "0000" => data <= "0111111";when "0001" => data <= "0000110";when "0010" => data <= "1011011";when "0011" => data <= "1001111";when "0100" => data <= "1100110";when "0101" => data <= "1101101";when "0110" => data <= "1111101";when "0111" => data <= "0000111";when "1000" => data <= "1111111";when "1001" => data <= "1101111";when "1010" => data <= "1110111";when "1011" => data <= "1111100";when "1100" => data <= "0111001";when "1101" => data <= "1011110";when "1110" => data <= "1111001";when "1111" => data <= "1110001";end case;end if;end process;b:process( clk ) –自加一beginif( clk = '0') thenif( en = '1') thenCASE set_ch ISwhen "00" => num1<=set_num;when "01" => num2<=set_num;when "10" => num3<=set_num;when "11" => num4<=set_num;end case;elseif num_counter = '0' thenif num1 = "1111" thennum1 <= "0000";num2 <= num2 + 1;else num1 <= num1 +1;end if;if num2 = "1111" thennum2 <= "0000";num3 <= num3 + 1;end if;if num3 = "1111" thennum3 <= "0000";num4 <= num4 + 1;end if;if num4 = "1111" thennum4 <= "0000";end if;end if;END IF;end if;end process;c:process( clk ) –分频variable a:integer range 0 to 9999:=0;beginif( clk = '1') thenif( a = 9999 ) thennum_counter <= not num_counter;a := 0;elsea := a + 1;end if;end if;end process;end behave;。

FPGA_触发器与计数器实验报告

FPGA_触发器与计数器实验报告

电力学院FPGA应用开发实验报告实验名称:触发器与计数器专业:电子科学与技术姓名:班级:学号:1.触发器功能的模拟实现实验目的:1.掌握触发器功能的测试方法。

2.掌握基本RS触发器的组成及工作原理。

3.掌握集成JK触发器和D触发器的逻辑功能及触发方式。

4.掌握几种主要触发器之间相互转换的方法。

5.通过实验,体会EPLD芯片的高集成度和多I/O口。

实验说明:将基本RS触发器,同步RS触发器,集成J-K触发器,D触发器同时集一个FPGA芯片中模拟其功能,并研究其相互转化的方法。

实验的具体实现要连线测试,实验原理如图所示:2.计数器在VHDL中,可以用Q<=Q+1简单地实现一个计数器,也可以用LPM来实现。

下面分别对这两种方法进行介绍。

方法一:第1步:新建一个Quartus项目。

第2步:建立一个VHDL文件,实现一个8位计数器。

计数器从“00000000”开始计到“11111111”,计数器的模是256。

计数器模块还需要包含一个时钟clock、一个使能信号en、一个异步清0信号aclr和一个同步数据加载信号sload。

模块符号如下图所示:第3步:VHDL代码如下:第4步:将VHDL文件另存为counter_8bit.vhd,并将其设定为项目的最顶层文件,再进行语法检查。

第5步:语法检查通过以后,用KEY[0]表示clock,SW[7..0]表示data,SW[8~10]分别表示en、sload和aclr;LEDR[7..0]表示q。

第6步:引脚分配完成后,编译并下载。

第7步:修改上述代码,把计数器的模更改为100,应如何操作。

模为100的计数器,VHDL代码如下:方法二:使用LPM实现8位计数器。

LPM是指参数化功能模块,用LPM可以非常方便快捷地实现一个计数器。

第1步:选择Tools->MegaWizard Plug-In Manager命令,打开如下图所示的对话框。

第2步:直接单击Next按钮,出现如下图所示的对话框。

fpga触发器及计数器实验报告

fpga触发器及计数器实验报告

XX电力学院FPGA应用开发实验报告实验名称:触发器与计数器专业:电子科学与技术姓名:班级:学号:1.触发器功能的模拟实现实验目的:1.掌握触发器功能的测试方法。

2.掌握基本RS触发器的组成及工作原理。

3.掌握集成JK触发器和D触发器的逻辑功能及触发方式。

4.掌握几种主要触发器之间相互转换的方法。

5.通过实验,体会EPLD芯片的高集成度和多I/O口。

实验说明:将基本RS触发器,同步RS触发器,集成J-K触发器,D触发器同时集一个FPGA芯片中模拟其功能,并研究其相互转化的方法。

实验的具体实现要连线测试,实验原理如图所示:2.计数器在VHDL中,可以用Q<=Q+1简单地实现一个计数器,也可以用LPM来实现。

下面分别对这两种方法进行介绍。

方法一:第1步:新建一个Quartus项目。

第2步:建立一个VHDL文件,实现一个8位计数器。

计数器从“00000000”开始计到“11111111”,计数器的模是256。

计数器模块还需要包含一个时钟clock、一个使能信号en、一个异步清0信号aclr和一个同步数据加载信号sload。

模块符号如下图所示:第3步:VHDL代码如下:第4步:将VHDL文件另存为counter_8bit.vhd,并将其设定为项目的最顶层文件,再进行语法检查。

第5步:语法检查通过以后,用KEY[0]表示clock,SW[7..0]表示data,SW[8~10]分别表示en、sload和aclr;LEDR[7..0]表示q。

第6步:引脚分配完成后,编译并下载。

第7步:修改上述代码,把计数器的模更改为100,应如何操作。

模为100的计数器,VHDL代码如下:方法二:使用LPM实现8位计数器。

LPM是指参数化功能模块,用LPM可以非常方便快捷地实现一个计数器。

第1步:选择Tools->MegaWizard Plug-In Manager命令,打开如下图所示的对话框。

第2步:直接单击Next按钮,出现如下图所示的对话框。

EDA实验二_VHDL七段数码管显示译码

EDA实验二_VHDL七段数码管显示译码

EDA实验二七段数码管显示译码的设计一、实验目的1、掌握七段数码管译码器的工作原理;2、学会运用波形仿真测试检验程序的正确性;3、学会运用波形仿真测试检验程序的正确性。

二、实验设备ZYE1502C型实验箱三、内容要求1、用拨位开关输入8421BCD码,七段数码管显示“0-F”16个16进制的数字。

2、观察字符亮度和显示刷新的效果:(1)在8个七段数码管上同时显示某一数字;(2)在8个七段数码管上动态显示某一数字。

3、扩展内容:(1)动态显示时,能即时改变显示的顺序;(2)动态显示时,实现显示数字从0~F的循环显示。

四、实验步骤1、输入:设计部分采用VHDL语言完成;2、编译;3、仿真;4、下载;5、连线。

(1)四个拨位开关(在P1、P2处选择)连接D3、D2、D1、D0信号所对应的管脚。

时钟CLK所对应的管脚同实验箱上的时钟源相连。

(2)扫描片选信号DIG(0 TO 3)的管脚同七段数码管(共阴)相连;(3)七段数码管驱动信号A,B,C,D,E,F,G的管脚分别同扫描数码管的段输入PCLK处的连接线孔A,B,C,D,E,F,G相连。

五、实验报告1、论述实验过程和步骤;2、填写正确的实验结果。

(1)通过两种显示效果分析:字符显示亮度同扫描频率的关系,且让人眼感觉不出光闪烁现象的最低扫描频率是多少?答:扫描频率越高,显示亮度越低。

人眼看是否闪烁与所用的时钟和分频方式有关,在频率稳定和分频均匀的情况下,最低扫描频率为256Hz,若分频不均匀或频率不稳定,则需更高频率。

(2)字形编码的种类,即一个7段数码管可产生多少种字符,产生所有字符需要多少根被译码信号线?答:一个7段数码管可产生2^7=128种字符,产生所有字符至少需要7根被译码信号线。

但假如只编译0-F,16个字符,则至少只需要4根被译码信号线。

六、实验小结。

答:1、不同控制端需要预先分配控制优先级,否则编写的时候会出现很多问题。

优先级分为普通和特殊,一般错误情况可以跨越权限显示出来。

基于FPGA的七段数码管显示设计

基于FPGA的七段数码管显示设计

基于FPGA的七段数码管显示设计FPGA是一种灵活可编程的集成电路芯片,可以根据需要重新配置其内部电路的功能和连接。

七段数码管是一种常见的数字显示器,可以显示0-9和一些字母如A、B、C等。

在本文中,我们将介绍如何使用FPGA设计一个基于七段数码管的显示系统。

首先,我们需要一个FPGA开发板,如Xilinx的Spartan-6系列开发板。

开发板上通常配有多个七段数码管和其他外设,以供我们进行测试和验证设计的正确性。

接下来,我们需要使用HDL(硬件描述语言)来描述我们的设计。

VHDL和Verilog是最常用的HDL。

在此我们以VHDL为例进行介绍。

首先,我们需要定义输入输出接口,以及需要的信号。

对于七段数码管显示系统,我们需要定义输入信号来控制要显示的数字或字母,以及一些控制信号如使能信号等。

同时,我们还需要定义输出信号来控制七段数码管的显示。

我们可以借助于状态机的设计方法来实现七段数码管的控制。

状态机是一种用于控制电子系统行为的有限状态自动机。

在状态机设计中,我们首先需要定义系统的各种状态。

对于七段数码管显示系统,我们可以定义六种状态:显示0、显示1、显示2、显示3、显示4和显示5、每个状态表示在对应的数字或字母上显示亮。

接下来,我们需要定义状态转换和输出逻辑。

对于状态转换,我们可以根据输入信号和当前状态来确定下一个状态。

对于输出逻辑,我们可以使用真值表或使用逻辑门等元件的连接来确定每个段显示器的输出信号。

最后,我们需要定义时钟周期和时序逻辑。

时钟周期是指任何一个操作从开始到完成所经过的时间,而时序逻辑是指操作发生的顺序和时间。

在设计完成后,我们需要将设计编译成二进制文件。

编译器将把我们的设计转换为可由FPGA芯片执行的二进制代码。

然后,我们将编译生成的二进制文件烧录到FPGA芯片中,并进行测试验证。

我们可以输入不同的数字或字母,观察七段数码管的显示情况,以确保设计满足我们的需求。

通过以上步骤,我们可以设计一个基于FPGA的七段数码管显示系统。

VHDL数码管扫描显示实验代码

VHDL数码管扫描显示实验代码

静态数字显示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY staticdigital ISPORT (clk,rst: IN STD_LOGIC; --rst复位,高有效figures: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --七段数码管cats: OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); --控制端END staticdigital;ARCHITECTURE digital OF staticdigital ISSIGNAL address: STD_LOGIC_VECTOR(2 DOWNTO 0); --记录控制端信号中‘0’的位--置,亦即当前数码管的位置SIGNAL colti: INTEGER RANGE 1 TO 2500; --外部时钟,控制一次状态显示的时间BEGINPROCESS(clk,rst)BEGINIF(rst = '1') THEN --复位端有效address <= "111";ELSIF(clk'EVENT AND clk = '1') THEN --等待时钟上升沿的到来colti <= colti + 1;IF(address = "101") THENIF (colti = 2500) THEN --但是要考虑外部时钟是否停留了足够的时间address <= "000";END IF;ELSEIF (colti = 2500) THENaddress <= address + 1;END IF;END IF;END IF;END PROCESS;PROCESS(address)--一个结构体可以有多个进程,--进程之间是并行运行的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Output(7 downto 0)
具体设计:
Vhd代码:
library IEEE;
use Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.
--library UNISIM;
--use sevenled_vhd is
Port (
input : in STD_LOGIC_VECTOR (3 downto 0);
led : out STD_LOGIC_VECTOR (7 downto 0)); end sevenled_vhd;
architecture Behavioral of sevenled_vhd is
begin
led<= "" when input="0000" else -- 0
"" when input="0001" else -- 1
"" when input="0010" else -- 2
"" when input="0011" else -- 3
"" when input="0100" else -- 4
"" when input="0101" else -- 5
"" when input="0110" else -- 6
"" when input="0111" else -- 7
"" when input="1000" else -- 8
"" when input="1001" else -- 9
"" when input="1010" else -- A
"" when input="1011" else -- b
"" when input="1100" else -- c
"" when input="1101" else -- d
"" when input="1110" else -- E
""; -- F
end Behavioral;
管脚约束:
Net "led<7>" LOC=N19;
Net "led<6>" LOC=N15;
Net "led<5>" LOC=R20;
Net "led<4>" LOC=R18;
Net "led<3>" LOC=U20;
Net "led<2>" LOC=T18;
Net "led<1>" LOC=U18;
Net "led<0>" LOC=W20;
Net "input<3>" LOC=F18;
Net "input<2>" LOC=G20;
Net "input<1>" LOC=J18;
Net "input<0>" LOC=L18;
综合结果:
仿真:
wait for 100ms; --0
input<="0000";
wait for 100ms; --1
input<="0001";
wait for 100ms; --2
input<="0010";
wait for 100ms; --3
input<="0011";
wait for 100ms; --4
input<="0100";
wait for 100ms; --5
input<="0101";
wait for 100ms; --6
input<="0110";
wait for 100ms; --7
input<="0111";
wait for 100ms; --8
input<="1000";
wait for 100ms; --9
input<="1001";
wait for 100ms; --A
input<="1010";
wait for 100ms; --B
input<="1011";
wait for 100ms; --C
input<="1100";
wait for 100ms; --D
input<="1101";
wait for 100ms; --E
input<="1110";
wait for 100ms; --F
input<="1111";
烧录程序结果
扩展板由8个数码管,选择其中一个显示。

将5V电源连接到其中一个数码管。

相关文档
最新文档