1、计数器 计数器设计报告目 录一、设计任务 二、题目分析与整体构思三、硬件电路设计四、程序设计 五、心得体会一 任务设计计数器是数字系统中用的较多的基本逻辑器件,它的基本功能是统计时钟脉冲的个数,即实现计数操作,它也可用于分频、定时、产生节拍脉冲和脉冲序列等。计数器分为同步计数器和异步计数器两种,计数器是一个典型的时序电路。计数器按照触发类型可分为同步计数器,异步计数器。其中同步计数器是指构成计数器的各触发器状态在时钟脉冲的控制下同时发生变化;异步计数器是指,组成计数器的各触发器,低位触发器的输出信号作为高位触发器的时钟信号。异步计数器与同步计数器不同之处就在于时钟脉冲的提供方式。 本实验利用V
2、HDL 硬件描述语言设计一个09999 的加法计数器。根据一定频率的触发时钟,计数器进行加计数,并利用数码管进行显示,当计数到9999 时,从0 开始重新计数。二 题目要求与整体构思SW0 为复位开关。当开关拨至高点平时,计数器归0,当开关拨至低电平时,计数器开始计数。该电路包括分频电路,计数器电路,二进制转BCD 码电路和数码管显示电路。分频电路(mod_clkdiv):由于内部时钟频率为50MHz,为了使肉眼能够观察加计数的过程,要将内部时钟进行分频,分频电路将内部时钟进行分频,将分频后的脉冲信号分别给计数器电路和数码管显示电路,做为时钟信号。对内部时钟脉冲进行218 分频,得到50000
3、000/ 218 =190Hz,将190Hz 信号作为数码管的输入时钟;对内部时钟信号进行220分频,得到50000000/ 220 =47.6Hz,用频率为47.68Hz 的信号来驱动模10000 的计数器。使用这个时钟频率7 段码显示将从0-9999 计数,时间大约为100000/47.68=209.7s(3.5 分钟)。计数器电路(mod_mod10kcnt):在输入脉冲上升沿进行加计数;二进制转BCD 电路(Mod_binbcd14):将二进制数据输入到二进制转BCD 码模块,输出BCD 编码,然后再将转换后的数据输入到数码管显示电路(mod_x7segbc)。(注:由于实验中需要用到
4、4 位7 段数码管,确认DIP 开关JP1 拨至上方(7SEGLED) 本实验4 位数码管的数据输入端是共用的,若要点亮4 个数码管,则采用循环扫描复用7 段数码管的方法。当位选信号为00,01,10,11 时,扫描不同的数码管。扫描时钟足够快时,虽然四个数字的显示还是分时复用的,但是人眼看到的好像是同一时刻显示了4 个数字。EXCD-1开发板上数码管是共阴极连接方式,因此当输入为高电平时,数码管点亮。三硬件设计四软件设计(1)创建工程制定工程名,工程路径以及顶层设计所使用的输入方式,此设计我们选择硬件描述语言作为顶层设计的输入方式HDL。(2)选择目标器件(3)创建新源文件这里我们选择“VH
5、DL Module”,进行新源文件模块定义,所定义的内容是所要设计模块的实体说明,即模块的端口说明。本实验所要实现的是计数器的设计,设定SW0 为复位端口,数码管为输出,选择输出为总线模式(Bus),Msb、Lsb 分别表示最大端口号与最小端口号(注意:选择端口方向in、out、inout)。检查模块端口定义是否正确。(4)添加源文件(5)完成工程创建在工程设置统计窗口,可以看到对工程的描述总结,目标器件的描述,以及新建源文件的总结,此工程创建完成。(6)设计输入包括库的声明,包的声明,完整的实体说明以及结构体框架。使用VHDL 语言设计完善计数器设计,拨动开关SW0 作为复位端,LED0LE
6、D3 作为输出显示,以观察实验结果。十六进制数0-F,所对应的7 段数码管的控制码如下:十六进制数 a b c d e f g0 1 1 1 1 1 1 01 0 1 1 0 0 0 02 1 1 0 1 1 0 13 1 1 1 1 0 0 14 0 1 1 0 0 1 15 1 0 1 1 0 1 16 1 0 1 1 1 1 17 1 1 1 0 0 0 08 1 1 1 1 1 1 19 1 1 1 1 0 1 1A 1 1 1 0 1 1 1B 0 0 1 1 1 1 1C 1 0 0 1 1 1 0D 0 1 1 1 1 0 1E 1 0 0 1 1 1 1F 1 0 0 0 1
7、1 1(7) 仿真设计代码输入完成后,需要对设计进行波形仿真。有添加波形仿真文件,仿真波形文件时钟设置,设置输入信号波形和波形仿真这几个步骤。(8) 设计综合Xilinx 综合工具对设计进行行为级综合,将系统直接从行为级描述综合为寄存器传输级描述。综合过程中主要完成三个步骤:首先为语法检查,检查设计文件语法是否有错误;其次为编译过程,翻译和优化HDL 代码,将其转换为综合工具可以识别的元件序列;最后为映射过程,将这些可识别的元件序列转换为可识别的目标技术的基本元件。Synthesis 工具即用来完成设计综合,它可完成以下任务查看综合报告(View Synthesis Report)、查看RTL
8、 原理图(View RTL Schematic)、查看技术原理图(Vies Technology Schematic)、检查语法(Check Syntax)、产生综合后仿真模型(Generate Post-Synthesis Simulation Model)。(). 引脚分配引脚分配表9-2 FPGA 管脚分配表对应板上资源 信号名 FPGA 引脚输入时钟 clk P80四位七段是码管位选 an P34四位七段是码管位选 an P35四位七段是码管位选 an P36四位七段是码管位选 an P39七段数码管 a 段 a_to_g P49七段数码管 b 段 a_to_g P42七段数码管 c
9、段 a_to_g P45七段数码管 d 段 a_to_g P41七段数码管 e 段 a_to_g P48七段数码管 f 段 a_to_g P50七段数码管 g 段 a_to_g P47七段数码管 小数点 dp P40开关SW0 btn P43 (10)设计实现设计综合完成后,即进行设计实现(Implement)。实现过程主要分为三个步骤:翻译逻辑网表(Translate)、映射到器件单元(Map)、布局布线(Place&Route)。在处理子窗口,鼠标双击Implement Design,信息输出窗口会显示设计信息。(11) 生成下载文件及目标板配置处理子窗口中双击Generate Progr
10、amming File,生成可编程文件。而后双击Configure Target Device,进行目标板配置。开发板正确连接,并上电后,可在ISE 用户区看到两个可配置芯片,分别为4Mb 的平台flash 与FPGA xc3s500e台flash 与FPGA xc3s500e。同时出现平台Flash 配置文件指定窗口,绿色芯片表示当前进行配置的芯片。该设计我们选择对FPGA xc3s500e 进行配置,平台Flash 配置窗口点击Cancel。选定FPGA 芯片图标,右键单击选择program,在随后弹出的“Device Programming Properties”对话框直接点击ok,对F
11、PGA 进行编程。文件下载成功,则显示“Program Succeeded”可通过开发板观察相应实验现象。至此,使用ISE 软件设计基本逻辑门电路已经完成。(12)程序代码见附件五.调试仿真后,打开开关,数码管开始显示计数。六心得体会本设计,满足了本次试验设计的任务要求,数码管正常显示计数。通过这次设计我们了解并掌握VHDL硬件描述语言的设计方法和思想,使自己能将已学过的数字电子系统设计、VHDL 程序设计等知识综合运用于电子系统的设计中,基本掌握了运用VHDL 设计电子系统的流程和方法,加强和培养了自己对电子系统的设计能力。我们也了解了VHDL的一些知识,VHDL主要用于描述数字系统的结构,
12、行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL语言作为一种国际标准化的硬件描述语言,自1987年获得IEEE批准以来,经过了1993年和2001年两次修改,至今已被众多的国际知名电
13、子设计自动化(EDA)工具研发商所采用,并随同EDA设计工具一起广泛地进入了数字系统设计与研发领域,目前已成为电子业界普遍接受的一种硬件设计技术。VHDL语言用于数字系统设计的主要优点是:(1)允许用软件描述系统的硬件结构,即描述系统怎样分解为子系统和子系统间怎样互连。(2)允许使用类似常用编程语言形式的系统功能指标。(3)允许对系统设计在制造前以低廉的花费进行性能模拟验证。(4)允许设计的详细结构从更抽象的性能指标出发沿自顶向下的路线分层次地进行综合。(5)允许设计重用和在可编程ASIC器件上生成设计芯片。VHDL语言的运用提高了我们设计电子系统的效率,简单实用,也在此次设计中提升了我们自身
14、运用所学知识的能力,也更加体会出作为团队中的一员要以团队思想为主题发展自己的思维。 在此感谢各位老师的指导,感谢赞助商给我们站在这个独特舞台上展现自己的机会。附件:程序代码顶层程序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
15、UNISIM;-use UNISIM.VComponents.all;entity mod10Kcnt_top is Port ( clk : in STD_LOGIC; btn : in STD_LOGIC; a_to_g : out STD_LOGIC_VECTOR (6 downto 0); an : out STD_LOGIC_VECTOR (3 downto 0); dp : out STD_LOGIC);end mod10Kcnt_top;architecture Behavioral of mod10Kcnt_top iscomponent clkdiv Port ( clk :
16、 in STD_LOGIC; clr : in STD_LOGIC; clk190 : out STD_LOGIC; clk48 : out STD_LOGIC);end component;component mod10Kcnt Port ( clr : in STD_LOGIC; clk : in STD_LOGIC; q : inout STD_LOGIC_VECTOR (13 downto 0);end component;component x7segbc Port ( x : in STD_LOGIC_VECTOR (15 downto 0); cclk : in STD_LOGI
17、C; clr : in STD_LOGIC; a_to_g : out STD_LOGIC_VECTOR (6 downto 0); an : out STD_LOGIC_VECTOR (3 downto 0); dp : out STD_LOGIC);end component;component binbcd14 Port ( b : in STD_LOGIC_VECTOR (13 downto 0); p : out STD_LOGIC_VECTOR (16 downto 0);end component;signal p : std_logic_vector(16 downto 0);
18、signal clr,clk48,clk190 : std_logic;signal b : std_logic_vector(13 downto 0);begin clrclk, clr=clr, clk190=clk190, clk48=clk48 ); u2 : mod10Kcnt port map( clr=clr, clk=clk48, q=b ); u3 : x7segbc port map( x=p(15 downto 0), cclk=clk190, clr=clr, a_to_g=a_to_g, an=an, dp=dp ); u4 : binbcd14 port map(
19、b=b, p=p ); end Behavioral;U1程序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 clkdiv is Port (
20、clk : in STD_LOGIC; clr : in STD_LOGIC; clk190 : out STD_LOGIC; clk48 : out STD_LOGIC);end clkdiv;architecture Behavioral of clkdiv issignal q : std_logic_vector(24 downto 0);begin process(clr,clk) begin if(clr=1) then q0); elsif(rising_edge(clk) then q = q + 1; end if; end process; clk190 = q(17);
21、-190Hz clk48 = q(19); -47.7Hzend Behavioral;U2程序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
22、mod10Kcnt is Port ( clr : in STD_LOGIC; clk : in STD_LOGIC; q : inout STD_LOGIC_VECTOR (13 downto 0);end mod10Kcnt;architecture Behavioral of mod10Kcnt isbegin process(clk,clr) begin if(clr=1) then q0); elsif(rising_edge(clk) then if(q=X270F) then -9999 q0); else q=q+1; end if; end if; end process;e
23、nd Behavioral;U3程序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 x7segbc is Port ( x : in STD_L
24、OGIC_VECTOR (15 downto 0); cclk : in STD_LOGIC; clr : in STD_LOGIC; a_to_g : out STD_LOGIC_VECTOR (6 downto 0); an : out STD_LOGIC_VECTOR (3 downto 0); dp : out STD_LOGIC);end x7segbc;architecture Behavioral of x7segbc issignal s : std_logic_vector(1 downto 0);signal digit : std_logic_vector(3 downt
25、o 0);signal aen : std_logic_vector(3 downto 0);begin dp=1; aen(3)=x(15) or x(14) or x(13) or x(12); aen(2)=x(15) or x(14) or x(13) or x(12) or x(11) or x(10) or x(9) or x(8); aen(1)=x(15) or x(14) or x(13) or x(12) or x(11) or x(10) or x(9) or x(8) or x(7) or x(6) or x(5) or x(4); aen(0)digitdigitdi
26、gitdigit a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g a_to_g = 1000111;-0111000; end case; end process; process(aen) begin an=0000; if(aen(conv_integer(s)=1) then an(conv_integer(s)=1; end if; end process; process(cclk,clr) begin if(clr=1) then s=00; elsif(rising_edge(cclk) then s=s+01; end if; end process; end Behavioral;U4程序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-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1