EDA数字秒表的设计
更新时间:2024-06-03 13:59:01 阅读量: 综合文库 文档下载
目录
1 绪论 .................................................................... 1 2 设计要求 ................................................................ 2 3 总体设计要求 ............................................................ 2
3.1 基本原理 .......................................................... 2 3.2分频器模块 ......................................................... 3 3.3 计数模块 .......................................................... 4 3.4 记录模块 .......................................................... 5 3.5 寄存器模块 ........................................................ 6 3.6 回放模块 .......................................................... 8 3.7 选择模块 .......................................................... 9 3.8 数显模块 ......................................................... 11 3.9 数字秒表的总原理图 ............................................... 13 4 仿真调试 ............................................................... 13
4.1 分频器模块的仿真调试 ............................................. 13 4.2 计数器模块的仿真调试 ............................................. 14 4.3 记录模块的仿真调试 ............................................... 14 4.4 寄存器模块的仿真 ................................................. 14 4.5 回放模块的仿真调试 ............................................... 15 4.6 选择模块的仿真调试 ............................................... 15 5 管脚分配 ............................................................... 16 6 总结与心得体会 ......................................................... 17 参考文献 ................................................................. 18 附录:源程序代码 ......................................................... 19
0
1 绪论
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
在EDA软件开发方面,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有ASIC设计工具,但不对外开放。中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。相信在不久的将来会有更多更好的设计工具在各地开花并结果。
1
2 设计要求
① 设计一个能测量4名运动员短跑成绩的数字秒表。要求用四位数码管显示时间,格式为00.00s。
② 秒表设置3个开关输入(清零开关1个,记录开关1个,回放开关1个)。按下“记录”开关,则将当前运动员成绩时间暂存,按下回放开关,依次回放各运动员成绩。
3 总体设计要求
3.1 基本原理
根据要求,数字秒表输入信号有:时钟信号CLK,清零开关CLR,记录开关RST,回放开关RSH;数字秒表的输出信号有:4个数码显示管的显示。数字秒表的主要功能是:计数功能和记录功能
数字秒表主要由七个部分构成:一是分频器;二是计数模块;三是记录模块;四是寄存器模块;五是回放模块;六是选择模块;七是数显模块。
当清零开关置低位‘0’时,所有显示均清零。
分频器模块的作用是将实验板子上50MHZ的信号频率降低到计数所需要的频率100HZ,然后将100HZ的信号作为实验的脉冲输入。
计数模块分为十秒、秒、百毫秒、十毫秒四个计数器。当时钟信号来临时,开始计数,十毫秒的进位信号让百毫秒开始计数,百毫秒的进位使秒开始计数,以此类推。
记录模块所需要实现的:当按下记录开关的时候,使能开关EN加一,并将当前的显示时间存入到使能所对应的组寄存器中。
寄存器模块功能是当记录模块的使能信号来临时,对应的一组寄存器将当前的时间存储起来,到要用的时候再调用。
回放模块:当回放开关按下形成一个脉冲的时候,使能开关PN加一,并将对应的寄存器中信号送入数显模块。
选择模块:通过使能开关PN来选择所需要的信号送到数显模块,完成计数,记录和回放的功能。
数显模块:将选择模块的信号经过译码后输出对应的时间显示
2
数显 计数 数字秒表 记录开关 回放开关 记录 寄存器
图1.总体设计框图
分频器 3.2分频器模块
分频器模块所实现的具体功能是将50MHZ的信号转化成所需要的100HZ的信号,所以需要对信号进行500000的分频,设计思想是:在程序内设置具有某范围的变量随时钟计数,前一半输出“0”,后一半输出“1”。实现这个分频器模块的VHDL程序为:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpinl IS --------分频器 PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); END ENTITY fenpinl;
ARCHITECTURE structure of fenpinl is constant count0:integer:=500000; begin
divide_clk:process(CLK_IN) variable n0:integer range 0 to 499999; begin
IF RISING_EDGE(CLK_IN) THEN if(n0<(count0/2))then CLK_OUT<='0'; n0:=n0+1;
elsif(n0 3 CLK_OUT<='1'; n0:=n0+1; else n0:=0; END if; END IF; END PROCESS divide_clk; END ARCHITECTURE structure; 图2.分频器封装图 3.3 计数模块 本模块实现的是计数功能,时钟信号是由分频器所得到的100HZ信号,并且本 模块由4个十进制的计数模块构成,各级进位作为高级的时钟信号,分别对应十秒,秒,百毫秒和十毫秒,理论可以显示出的最大值为99.99s,并且计数器都是异步清零的。 实现本模块的程序为: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count10 is ----------十进制计数器 port(clk,clr:in std_logic;----时钟/清零信号 dout:buffer std_logic_vector(3 downto 0); 4 co:out std_logic);-------输出/进位信号 end count10; architecture behave of count10 is begin process(clr,clk) begin if clr='0' then dout<=\ elsif(rising_edge(clk)) then if dout=\ co<='1'; else dout<=dout+1;co<='0'; end if; end if; end process; end behave; 图3.十进制计数器模块封装图 3.4 记录模块 记录模块的功能是实现当有一个记录脉冲过来时,所记录的使能输出加一,第一个使能输出对应的是第一个寄存器模块,往后以此类推。 实现的程序: 5 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity RECORD1 is --------记录模块 port( clr:in std_logic; RST:in STD_LOGIC; en:BUFFER std_logic_vector(2 downto 0)); ---使能输出 end; architecture behave of record1 is begin process(clr,RST) begin if clr='0' then en<=\ elsif(RISING_edge(RST)) then en<=en+1; end if; end process; end; 图4.记录模块封装图 3.5 寄存器模块 寄存器模块主要是由4组16个D触发器构成的,当使能信号EN来临时,对应EN的一组触发器记录一个时间,并且将每一组的时间信号从输出端口输送到选择模块 6 的输入端口。 其中一组寄存器的程序为: LIBRARY IEEE; use ieee.std_logic_1164.all; ENTITY DFF1 IS ------4位D触发器 PORT( clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 clk:in std_logic; d1:in std_logic_vector(3 downto 0);------输入信号 q1:out std_logic_vector(3 downto 0)); END; architecture behave of dff1 is signal Q:std_logic_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLR,CLK,EN) BEGIN IF en=\ IF CLR='0' THEN Q<=\ ELSIF RISING_EDGE(CLK) THEN Q<=d1; END IF; END IF; END PROCESS; Q1<=Q; END; 7 图5.寄存器模块封装图 3.6 回放模块 回放模块输入是回放按钮的一个脉冲信号,来一个脉冲,使能信号PN加一,然后将使能信号输入到选择模块中作为判断信号。 程序为: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity REPLAY is -----------回放模块 port(clr:in std_logic; rsh:in std_logic; pn:buffer std_logic_vector(2 downto 0)); ---使能输出 end; architecture behave of replay is begin process(clr,rsh) begin if clr='0' then pn<=\ ELSif (RISING_EDGE(RSH)) then pn<=pn+1; end if; 8 end process; end; 图6.回放模块封装图 3.7 选择模块 选择模块的功能是:当PN=”000”时,输出的只是计数器数据,即当时时间; 当PN=”001”时,输出的是存储在第一组寄存器中的时间; 当PN=”010”时,输出的是存储在第二组寄存器中的时间; 当PN=”011”时,输出的是存储在第三组寄存器中的时间; 当PN=”100”时,输出的是存储在第四组寄存器中的时间。 实现程序为: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY select1 IS ------------------选择模块 PORT( pn:in std_logic_vector(2 downto 0); din0,din1,din2,din3:in std_logic_vector(3 downto 0); q00,q01,q02,q03,q10,q11,q12,q13,q20,q21,q22,q23,q30,q31,q32,q33:in std_logic_vector(3 downto 0); dout0,dout1,dout2,dout3:out STD_LOGIC_VECTOR(3 DOWNTO 0)); end; architecture behave of select1 is 9 begin process(pn,din0,din1,din2,din3,q00,q01,q02,q03,q10,q11,q12,q13,q20,q21,q22,q23,q30,q31,q32,q33) begin case pn is when \when \when \when \when \when others => dout0<=q30;dout1<=q31;dout2<=q32;dout3<=q33; end case; end process; end; 图7.选择模块封装图 10 3.8 数显模块 数显模块由四个七段数码管显示构成,实现的功能是将选择器输送过来的信号转化 成数码管上显示的数字时钟,由于实验板CycloneⅢ EP3C16F484C6 的数码管是共阳数码管,所以各个七位数所对应的数字如下: \\\\\ \\\\\实现数显模块程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shumaguan IS PORT( DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); led:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END shumaguan; ARCHITECTURE ART OF shumaguan IS BEGIN PROCESS(DIN) BEGIN CASE DIN IS WHEN \ 11 --0 WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ --1 --2 --3 --4 --5 WHEN \ --6 WHEN \ WHEN \ WHEN \ WHEN OTHERS=>led<=\ END CASE; END PROCESS; END ARCHITECTURE ART; --7 --8 --9 图8.数显模块封装图 12 3.9 数字秒表的总原理图 图9.数字秒表总原理图 如图10所示,输入有四个,分别是:脉冲信号CLK,清零信号CLR,记录信号RST,回放信号RSH。输出即是四个七段数码管的显示 图10.数字秒表总体封装图 4 仿真调试 4.1 分频器模块的仿真调试 由于需求的仿真是500000分频,软件无法显示完全,所以将500000分频改为4分 频进行程序的仿真调试 图11.分频器模块的仿真 13 4.2 计数器模块的仿真调试 计数器由于是十进制,所以每次计数到“1001”时,重新归零,并且产生一个进位 信号。 4.3 图12.十进制计数器的仿真 记录模块的仿真调试 记录模块的主要输入是记录信号的脉冲,输出信号则是使能EN,每来一个记录信 号的脉冲,使能信号EN加一,不同的使能信号EN对应不同的寄存器组。 图13.记录模块的仿真 4.4 寄存器模块的仿真 寄存器模块是根据使能信号EN来判断使用哪一组寄存器,图中所示是第一组寄存器模块的仿真 14 图14.寄存器模块的仿真 4.5 回放模块的仿真调试 回放模块的主要输入是回放信号的脉冲,输出信号则是使能PN,每来一个回放信号的脉冲,使能信号PN加一,不同的使能信号PN对应着选择器输出的不同 图15.回放模块仿真 4.6 选择模块的仿真调试 选择模块根据选择使能PN的不同输出不同,图中的使能为“001”,故输出dout为第一组触发器q0x的记录值 15 图16.选择模块的仿真 5 管脚分配 图17.管脚分配图 16 6 总结与心得体会 本次课设的真正操作时间只有四天,在这短短的四天之内,我从连quartus怎么用都不知道的新手到现在能够熟练操作,并且能够用VHDL语言完成整个数字秒表的设计,不得不说这次的课设让我收获不少。 最开始的时候,课设的主要问题是quartus软件的运用问题,但是自己在网上找到了教学视频,并且虚心请教了那些会用quartus的同学,熟悉掌握软件功能差不多花了我一天时间。看到数字秒表的要求的时候,对于本次设计的第一印象就是需要计数器模块,然后看到还需要满足的记录和回放功能,这个确实不知道要怎么做,经过老师的点拨之后,明白了原来是要用4组16个D触发器做一个寄存器组将需要记录的4个运动员的成绩暂存下来,当要回放的时候,在通过使能开关和选择器会放出所需要显示的运动员的成绩。然后在编程过程中,遇到的问题不少,首先是各个模块的单独实现,这个花费了将近1/3的时间。最后将模块综合的时候,由于元件例化的问题,程序一直在报错,经过反复调试修改,错误为零可以完成编译的时候,仿真的问题也出现了,因为程序的部分问题,第四个数据不能锁存,当按下回放后,后来的计数会继续显示。当加了第四次回放锁存的时候,问题成功解决,程序的主体大致完成。 接下来就是管脚的设置,最开始确实是一筹莫展,但是对照着所给的关于板子的pdf文档的介绍,大致明白了各个模块部分对应的管脚是什么,对着所需要的模块的管脚位置,一个一个在assignment editor里面对应的填,然后安装好板子的驱动过后,将程序下载到板子上运行。实物开始运行之后,清零开关,记录开关和回放开关均能正常工作,本次课设的实物演示成功。 通过本次课设,我熟练掌握了quartus软件的基本操作以及VHDL程序的编写,并且让我认识到有些时候不能靠别人,那样的结果可能是竹篮打水一场空。有些时候自己要静下心来思考,问题没有自己想得那么复杂。在这次的课设中就是这样,将数字秒表的问题分为了七个模块,每个模块都是可以轻松解决的小问题。将大问题分解成一个个小问题,思维更加活跃,更具有逻辑性,这就是我所学到的东西。 17 参考文献 [1] 潘松著主编,EDA技术实用教程(第二版),科学出版社,2005. [2] 梁勇 王留奎 EDA技术教程 人民邮电出版社,2010 [3] 谭会生主编,EDA技术综合应用实例与分析 西安电子科技大学出版社,2007 [4] 徐志军 王金明 尹廷辉 EDA技术与VHDL设计 电子工业出版社, [5] 江国强 EDA技术习题与实验 电子工业出版社,2005 18 附录:源程序代码 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity miaob is port( clk,clr:in std_logic;-----脉冲信号/清零开关 rst,rsh:in std_logic;------记录/回放开关 led0,led1,led2,led3:out std_logic_vector(6 downto 0)); end miaob; architecture behave of miaob is COMPONENT fenpinl port(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); end COMPONENT; COMPONENT count10 port(clr,clk:in std_logic;----时钟/清零/缓存信号 dout:buffer std_logic_vector(3 downto 0); co:out std_logic);-------进位信号 end COMPONENT; COMPONENT RECORD1 port( clr:in std_logic; RST:in STD_LOGIC; en:BUFFER std_logic_vector(2 downto 0)); ---使能输出 end COMPONENT; 19 COMPONENT dff1 port(clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 clk:in std_logic; d1:in std_logic_vector(3 downto 0);------输入信号 q1:out std_logic_vector(3 downto 0)); end COMPONENT; COMPONENT dff2 port(clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 clk:in std_logic; d2:in std_logic_vector(3 downto 0);------输入信号 q2:out std_logic_vector(3 downto 0)); end COMPONENT; COMPONENT dff3 port(clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 clk:in std_logic; d3:in std_logic_vector(3 downto 0);------输入信号 q3:out std_logic_vector(3 downto 0)); end COMPONENT; COMPONENT dff4 port(clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 clk:in std_logic; d4:in std_logic_vector(3 downto 0);------输入信号 20 q4:out std_logic_vector(3 downto 0)); end COMPONENT; COMPONENT REPLAY port(clr:in std_logic; rsh:in std_logic; pn:buffer std_logic_vector(2 downto 0)); ---使能输出 end COMPONENT; COMPONENT select1 PORT( pn:in std_logic_vector(2 downto 0); din0,din1,din2,din3:in std_logic_vector(3 downto 0); q00,q01,q02,q03,q10,q11,q12,q13,q20,q21,q22,q23,q30,q31,q32,q33:in std_logic_vector(3 downto 0); dout0,dout1,dout2,dout3:out STD_LOGIC_VECTOR(3 DOWNTO 0)); end COMPONENT; COMPONENT shumaguan IS PORT( DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); led:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); end COMPONENT; SIGNAL CLK_IN,CLK_OUT:std_logic; signal count1,count2,count3,count4:std_logic; signal tdin0,tdin1,tdin2,tdin3,tdout0,tdout1,tdout2,tdout3:std_logic_vector(3 downto 0); signal q10,q11,q12,q13,q20,q21,q22,q23,q30,q31,q32,q33,q40,q41,q42,q43:std_logic_vector(3 downto 0); 21 signal tled0,tled1,tled2,tled3:std_logic_vector(6 downto 0); signal tsel:std_logic_vector(1 downto 0); signal ten,tpn:std_logic_vector(2 downto 0); begin U0:fenpinl port map(clk,clk_out); U1:count10 port map(clr,clk_out,tdin0,count1);----十毫秒 U2:count10 port map(clr,count1,tdin1,count2);-----百毫秒 U3:count10 port map(clr,count2,tdin2,count3);-----个位秒 U4:count10 port map(clr,count3,tdin3,count4);-----十位秒 U5:RECORD1 port map(clr,rst,ten); U6:dff1 port map(clr,ten,clk,tdin0,q10); U7:dff1 port map(clr,ten,clk,tdin1,q11); U8:dff1 port map(clr,ten,clk,tdin2,q12); U9:dff1 port map(clr,ten,clk,tdin3,q13); U10:dff2 port map(clr,ten,clk,tdin0,q20); U11:dff2 port map(clr,ten,clk,tdin1,q21); U12:dff2 port map(clr,ten,clk,tdin2,q22); U13:dff2 port map(clr,ten,clk,tdin3,q23); U14:dff3 port map(clr,ten,clk,tdin0,q30); U15:dff3 port map(clr,ten,clk,tdin1,q31); U16:dff3 port map(clr,ten,clk,tdin2,q32); U17:dff3 port map(clr,ten,clk,tdin3,q33); U18:dff4 port map(clr,ten,clk,tdin0,q40); U19:dff4 port map(clr,ten,clk,tdin1,q41); U20:dff4 port map(clr,ten,clk,tdin2,q42); U21:dff4 port map(clr,ten,clk,tdin3,q43); U22:REPLAY port map(clr,rsh,tpn); U23:SELECT1 22 port map(tpn,tdin0,tdin1,tdin2,tdin3,q10,q11,q12,q13,q20,q21,q22,q23,q30,q31,q32,q33,q40,q41,q42,q43,tdout0,tdout1,tdout2,tdout3); U24:shumaguan port map(tdout0,tled0); U25:shumaguan port map(tdout1,tled1); U26:shumaguan port map(tdout2,tled2); U27:shumaguan port map(tdout3,tled3); led0<=tled0;led1<=tled1;led2<=tled2;led3<=tled3; end behave; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpinl IS --------分频器 PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); END ENTITY fenpinl; ARCHITECTURE structure of fenpinl is constant count0:integer:=500000; begin divide_clk:process(CLK_IN) variable n0:integer range 0 to 499999; begin IF RISING_EDGE(CLK_IN) THEN if(n0<(count0/2))then CLK_OUT<='0'; n0:=n0+1; elsif(n0 23 CLK_OUT<='1'; n0:=n0+1; else n0:=0; END if; END IF; END PROCESS divide_clk; END ARCHITECTURE structure; library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count10 is ----------十进制计数器 port(clk,clr:in std_logic;----时钟/清零信号 dout:buffer std_logic_vector(3 downto 0); co:out std_logic);-------输出/进位信号 end count10; architecture behave of count10 is begin process(clr,clk) begin if clr='0' then dout<=\ elsif(rising_edge(clk)) then if dout=\ co<='1'; else dout<=dout+1;co<='0'; end if; end if; end process; 24 end behave; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity RECORD1 is --------记录模块 port( clr:in std_logic; RST:in STD_LOGIC; en:BUFFER std_logic_vector(2 downto 0)); ---使能输出 end; architecture behave of record1 is begin process(clr,RST) begin if clr='0' then en<=\ elsif(RISING_edge(RST)) then en<=en+1; end if; end process; end; LIBRARY IEEE; use ieee.std_logic_1164.all; ENTITY DFF1 IS ------4位D触发器 PORT( clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 25 clk:in std_logic; d1:in std_logic_vector(3 downto 0);------输入信号 q1:out std_logic_vector(3 downto 0)); END; architecture behave of dff1 is signal Q:std_logic_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLR,CLK,EN) BEGIN IF en=\ IF CLR='0' THEN Q<=\ ELSIF RISING_EDGE(CLK) THEN Q<=d1; END IF; END IF; END PROCESS; Q1<=Q; END; LIBRARY IEEE; use ieee.std_logic_1164.all; ENTITY DFF2 IS ------4位D触发器 PORT( clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 clk:in std_logic; d2:in std_logic_vector(3 downto 0);------输入信号 q2:out std_logic_vector(3 downto 0)); 26 END; architecture behave of dff2 is signal Q:std_logic_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLR,CLK,EN) BEGIN IF en=\ IF CLR='0' THEN Q<=\ ELSIF RISING_EDGE(CLK) THEN Q<=d2; END IF; END IF; END PROCESS; Q2<=Q; END; LIBRARY IEEE; use ieee.std_logic_1164.all; ENTITY DFF3 IS ------4位D触发器 PORT( clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 clk:in std_logic; d3:in std_logic_vector(3 downto 0);------输入信号 q3:out std_logic_vector(3 downto 0)); END; architecture behave of dff3 is signal Q:std_logic_VECTOR(3 DOWNTO 0); 27 BEGIN PROCESS(CLR,CLK,EN) BEGIN IF en=\ IF CLR='0' THEN Q<=\ ELSIF RISING_EDGE(CLK) THEN Q<=d3; END IF; END IF; END PROCESS; Q3<=Q; END; LIBRARY IEEE; use ieee.std_logic_1164.all; ENTITY DFF4 IS ------4位D触发器 PORT( clr:in std_logic; en:in std_logic_vector(2 downto 0);-----使能信号 clk:in std_logic; d4:in std_logic_vector(3 downto 0);------输入信号 q4:out std_logic_vector(3 downto 0)); END; architecture behave of dff4 is signal Q:std_logic_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLR,CLK,EN) BEGIN 28 IF en=\ IF CLR='0' THEN Q<=\ ELSIF RISING_EDGE(CLK) THEN Q<=d4; END IF; END IF; END PROCESS; Q4<=Q; END; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity REPLAY is -----------回放模块 port(clr:in std_logic; rsh:in std_logic; pn:buffer std_logic_vector(2 downto 0)); ---使能输出 end; architecture behave of replay is begin process(clr,rsh) begin if clr='0' then pn<=\ ELSif (RISLING_EDGE(RSH)) then pn<=pn+1; end if; end process; end; 29 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY select1 IS ------------------选择模块 PORT( pn:in std_logic_vector(2 downto 0); din0,din1,din2,din3:in std_logic_vector(3 downto 0); q00,q01,q02,q03,q10,q11,q12,q13,q20,q21,q22,q23,q30,q31,q32,q33:in std_logic_vector(3 downto 0); dout0,dout1,dout2,dout3:out STD_LOGIC_VECTOR(3 DOWNTO 0)); end; architecture behave of select1 is begin process(pn,din0,din1,din2,din3,q00,q01,q02,q03,q10,q11,q12,q13,q20,q21,q22,q23,q30,q31,q32,q33) begin case pn is when \when \when \when \when \when others => dout0<=q30;dout1<=q31;dout2<=q32;dout3<=q33; end case; end process; end; LIBRARY IEEE; 30 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shumaguan IS PORT( DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); led:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END shumaguan; ARCHITECTURE ART OF shumaguan IS BEGIN PROCESS(DIN) BEGIN CASE DIN IS WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ --0 --1 --2 --3 --4 --5 WHEN \ --6 WHEN \ WHEN \ WHEN \ WHEN OTHERS=>led<=\ END CASE; END PROCESS; END ARCHITECTURE ART; --7 --8 --9 31
正在阅读:
EDA数字秒表的设计06-03
介绍家乡的一种特产04-24
景观设计原则之地被植物10-10
己二酸绿色合成新途径06-10
智慧医疗完整-解决方案201609-19
邵鹏,论媒介记忆的维度、机制及其镜像06-22
四川省高职测绘大赛理论考试-2015年竞赛理论知识考试样题4.1406-03
教育民事公益诉讼相关问题研究03-16
较复杂的三组抢答器的PLC控制 - 图文11-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 秒表
- 数字
- 设计
- EDA