当前位置:首页 > 范文大全 > 公文范文 >

基于FPGA计数器设计电子技术课程设计

时间:2022-12-01 16:05:04 浏览量:

XX学院 电子技术课程设计 题 目 _基于FPGA的计数器设计___ _________________________ 学生姓名 _ XXX_________________ 专业班级 电子信息工程班__ __ 学 号 _ __________ 院 (系)
电气信息工程学院___ ____ 指导教师 _ ____________ 完成时间 2013年X月X日____ ___ 郑州轻工业学院 课 程 设 计 任 务 书 题目 基于FPGA的计数器的程序设设计_______________ 专业、班级 电子信息工程 学号 姓名 _____ 主要内容、基本要求、主要参考资料等:
主要内容:
要求学生使用硬件描述语言(Verilog 或者VHDL)设计基于FPGA的计数器的源程序。实现如下功能:显示1个0-9999的四位计数器;
四位七段数码管的译码与显示。理解数码管的译码原理,同时需要做一个分频器,理解时钟分频的原理及意义。

基本要求:
1、学会quartusII的使用,掌握FPGA 的程序设计方法。

2、掌握硬件描述语言语法。

3、程序设计完成后要求在quartusII中实现功能仿真。

主要参考资料:
1、褚振勇. FPGA设计及应用(第三版)[M].西安电子科技大学出版社.2012,4 2、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版社.2008,1 完 成 期 限:
2013.6.21—2013.6.25 指导教师签名:
________________ 课程负责人签名:
___________________ 2013年 6月 18日 目 录 基于FPGA的计数器的程序设设计 i 摘 要 i 1 绪论 1 1.1 FPGA简介 1 1.2 硬件描述语言VHDL特点 1 1.3 软件开发工具Quartus II 简介 2 2 整体设计方案 3 3 各个模块的设计和功能的具体分析 4 3.1 分频器设计 4 3.1.1 设计原理 4 3.1.2 源程序及其仿真波形 4 3.1.3 RTL电路图 6 3.2 计数器设计 6 3.2.1 计数器及其应用 6 3.2.2 计数器源程序及其仿真 7 3.3 锁存器设计 9 3.3.1 锁存器及其应用 9 3.3.2 16位锁存器源程序及其仿真波形 9 3.4 显示部分设计 10 3.4.1 七段数码管显示原理 10 3.4.2 七段数码管源程序及其仿真 11 4 计数器顶层设计 13 4.1.1 基于VHDL的自顶向下的设计方法 13 4.3.2顶层设计源文件及其仿真波形 13 总 结 16 参考文献 17 附 录 18 基于FPGA的计数器的程序设设计 摘 要 本文介绍了一种基于FPGA的,由顶层到底层设计的数字频率计。本文主要包括该频率计的设计基础和实现方法以及译码与显示等内容, 描述了它的设计平台、工作原理和软硬件实现。本设计主要有分频器、四位计数器、16位锁存器以及数码管显示电路。计数器设计采用VHDL硬件描述语言编程,极大地减少了硬件资源的占用,仿真与分析结果表明,该数字频率计性能优异,软件设计语言灵活,硬件简单,速度快。

关键词 FPGA 计数器 VHDL 1 绪论 1.1 FPGA简介 FPGA(Field-Progrmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

自1985 年Xilinx 公司推出第一片中大规模现场可编程逻辑器件(FP2GA) 至今,FPGA 已经历了十几年的历。在这十几年的过程中,可编程器件有了惊人的发展:从最初的1200 个可利用门,到今天的25 万可利用门,规模增大了200 多倍; FPGA 供应商也从Xilinx 的一枝独秀,到今天近20 个厂商的分庭抗争;FPGA 从单一的基于SRAM结构到今天各种结构类型的出现,都充分体现了可编程器件这一巨大市场的吸引力。  FPGA 不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格 不断降低。由于目前电子产品生命周期相对缩短,相近功能产品的派生设计增多等特点,促使FPGA 越来越多地取代了ASIC 的市场,特别是对国内众多的科研单位来说,小批量、多品种的产品需求,使得FPGA 成为首选。

1.2 硬件描述语言VHDL特点 功能强大、设计灵活。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;
既支持模块化设计,又支持层次化设计。支持广泛、易于修改。由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。强大的系统硬件描述能力。VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。独立于器件的设计、与工艺无关。设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。很强的移植能力。VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。

1.3 软件开发工具Quartus II 简介 Altera的Quartus II 设计软件提供了完整的多平台设计环境,它可以轻易满足各种特定设计的需要,也是单芯片可编程系统 (SOPC) 设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。Quartus II设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。

Quartus II 包括模块化的编译器。编译器包括的功能模块有分析/综合器(Analysis&Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(Timing Analyzer)、设计辅助模块(Design Assistant)等。可以通过选择 Start Compilation (Processing 菜单)来运行所有的编译器模块。

若要单独运行各个模块,可以通过选择 Start(Processing 菜单),然后从 Start 子菜单中为模块选择相应的指令。此外,还可以通过选择 Compiler Tool (Tools 菜单)并在 Compiler Tool窗口中运行该模块来启动编译器模块。

在 Compiler Tool 窗口中,可以打开该模块的设置文件或报告文件,还可以打开其它相关窗口。

Quartus II支持层次化的设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块进行调试,从而解决原理图与HDL混合输入设计的问题。在设计输入之后,Quartus II的编译器将给出设计输入的错误报告。可以使用Quartus II带有的RTL Viewer观察综合后的RTL图。Quartus II自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编译文件汇编(装配)、时序参数提取以及编程下载几个步骤。

2 整体设计方案 设计基于FPGA的计数器,要求显示1个0-9999的四位计数器,可以由4个模为10的十进制计数器级联而成,所以可以显示的频率范围是1-9999HZ。因此,频率计的功能分割成四个模块:分频计,计数器,输出锁存器和译码显示电路。各个模块均用VHDL语言描述并用quartus2进行仿真。本设计采用数控分频计,可以对信号实现不同分频比,输出信号作为计数器输入。锁存器由一个外部脉冲控制可以控制显示部分显示周期。当系统正常工作时,输入信号标提供频率,经过分频器分频,产生计数信号送入计数器模块,计数模块对输入的脉冲个数进行计数数结束后,将计数结果送入锁存器中,保证系统可以稳定显示数据,计数结果能够显示在七段数码显示管上。

clk11 计数器 分频计 锁存器 显示电路 ena0 rest0 clk2 图1 设计方案 3 各个模块的设计和功能的具体分析 3.1 分频器设计 3.1.1 设计原理 分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器,即使在输入输出信号均为正弦波时也往往采用模数转换-数字分频-数模转换的方法来实现分频。正弦分频器除在输入信噪比低和频率极高的场合已很少使用。

数控分频器的功能是在输入端给定不同数据时,将对输入的时钟信号有不同的分频比,对于一个N分频器,分频出的时钟周期是原时钟周期的N倍,频率变为原来的1/N。对于一个8位计数器,如果输入数DD,然后启动计数器工作,则经过D倍的时钟周期计数器溢出时,输出full变为高电平,再以full为敏感信号,对fout进行取反操作,如此N=2D。计数一次后,再重新计数,反复进行直至输入被赋予新值。对于数控分频数器,装载不同的计数初始值时,会有不同频率的溢出信号,从而得到不同的输出。数控分频器是利用计数值可并行预置的加法计数器设计完成的。

3.1.2 源程序及其仿真波形 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DVF IS PORT ( CLK : IN STD_LOGIC; DD : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC ); END; ARCHITECTURE one OF DVF IS SIGNAL FULL : STD_LOGIC; BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK = '1' THEN IF CNT8 = “11111111“ THEN CNT8 := DD; --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8 FULL <= '1'; --同时使溢出标志信号FULL输出为高电平 ELSE CNT8 := CNT8 + 1; --否则继续作加1计数 FULL <= '0'; --且输出溢出标志信号FULL为低电平 END IF; END IF; END PROCESS P_REG ; P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULL'EVENT AND FULL = '1' THEN CNT2 := NOT CNT2; --如果溢出标志信号FULL为高电平,D触发器输出取反 IF CNT2 = '1' THEN FOUT <= '1'; ELSE FOUT <= '0'; END IF; END IF; END PROCESS P_DIV ; END; 图2 分频器仿真波形 3.1.3 RTL电路图 图3 分频器RTL电路图 3.2 计数器设计 3.2.1 计数器及其应用 计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数,常见的有3位和4位的。很显然,3位数的计数器最大可以显示到999,4位数的最大可以显示到9999。在数字电子技术中应用的最多的时序逻辑电路。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。

3.2.2 计数器源程序及其仿真 (1)
十进制计数器 加数的合法设计范围为0到9,故当输入的加数大于9的时候要将其统一变换成0。本实验采用一个带有异步复位和同步时钟使能的十进制加法计数器,这种计数器有许多实际的用处。如果rst为“1”,将对时钟清零;
如果为1,且有clk信号,则允许计数器就数,若计数器小于9,计数器加1,否则清零。第二个if语句功能是当计数器cqi的只达到9时产生进位溢出信号。

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt10 is port (rst,clk,ena:in std_logic; cout: out std_logic; outy :out std_logic_vector(3 downto 0)); end cnt10; architecture behv of cnt10 is begin process (rst,ena,clk) variable cqi :std_logic_vector(3 downto 0); begin if rst='1' then cqi :=(others =>'0'); elsif clk'event and clk='1' then if ena ='1' then if cqi < 9 then cqi:=cqi+1;cout<='0'; elsif cqi=9 then cqi :=(others =>'0'); cout<='1'; end if; elsif ena='0' then cqi:=(others =>'0'); end if; end if; outy <=cqi; end process; end behv; 图4 十进制计数器仿真波形 (2)四位计数器 下面是一含计数使能、异步复位功能的4位计数器, rst是异步清信号,高电平有效。

library ieee; use ieee.std_logic_1164.all; entity cnt10_4 is port(clkk,rst,ena:in std_logic; d:out std_logic_vector(15 downto 0)); end entity; architecture one of cnt10_4 is component cnt10 port (rst,clk,ena:in std_logic; cout: out std_logic; outy :out std_logic_vector(3 downto 0)); end component; signal e:std_logic_vector(3 downto 0); begin u1:cnt10 port map(clk=>clkk,rst=>rst,ena=>ena,cout=>e(0),outy=>d(3 downto 0)); u2:cnt10 port map(clk=>e(0),rst=>rst,ena=>ena,cout=>e(1),outy=>d(7 downto 4)); u3:cnt10 port map(clk=>e(1),rst=>rst,ena=>ena,cout=>e(2),outy=>d(11 downto 8)); u4:cnt10 port map(clk=>e(2),rst=>rst,ena=>ena,cout=>e(3),outy=>d(15 downto 12)); end architecture one; 3.3 锁存器设计 3.3.1 锁存器及其应用 所谓锁存器,就是输出端的状态不会随输入端的状态变化而变化,仅在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号到来时才改变。典型的锁存器逻辑电路是D 触发器电路。在LED和数码管显示方面,要维持一个数据的显示,往往要持续的快速的刷新。尤其是在四段八位数码管等这些要选通的显示设备上。在人类能够接受的刷新频率之内,大概每三十毫秒就要刷新一次。这就大大占用了处理器的处理时间,消耗了处理器的处理能力,还浪费了处理器的功耗。锁存器的使用可以大大的缓解处理器在这方面的压力。当处理器把数据传输到锁存器并将其锁存后,锁存器的输出引脚便会一直保持数据状态直到下一次锁存新的数据为止。这样在数码管的显示内容不变之前,处理器的处理时间和IO引脚便可以释放。可以看出,处理器处理的时间仅限于显示内容发生变化的时候,这在整个显示时间上只是非常少的一个部分。而处理器在处理完后可以有更多的时间来执行其他的任务。这就是锁存器在LED和数码管显示方面的作用:节省了宝贵的MCU时间。

3.3.2 16位锁存器源程序及其仿真波形 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity reg16b is port (load: in std_logic; din: in std_logic_vector(15 downto 0); dout: out std_logic_vector(15 downto 0)); end reg16b; architecture art of reg16b is begin process(load,din) begin if load'event and load='1'then dout<=din; end if; end process; end architecture art; 图5 锁存器波形 3.4 显示部分设计 3.4.1 七段数码管显示原理 对于人机交互式单片机系统来说,不仅需要响应用户输入,同时也需要将一些测控信息输出显示。这些显示信息可以提供实时的数据或图形结果,以便于掌握系统的状态并进行分析处理。目前,最常用的是LED数码管显示。其成本低廉、使用简便,可以显示数字或几个特定的字符。数码管数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个发光二极管单元,其基本单元是发光二极管。数码管通过对其不同的管脚输入相对 图6 七段数码管原理 的电流,使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数的器件。在电器特别是家电领域应用极为广泛,如显示屏、空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。

7段共阳极LED数码管是由7个条形发光二极管和一个小数点位构成,其引脚配置,如图所示,其内部结构,如图所示。从图中可以看出,其中7个发光二极管构成字形“8”,可以用来显示数字,另一个发光二极管构成小数点。因此,这种数码管有时也被称为8段LED数码管显示器。

LED数码管及引脚图资料LED数码管实际上是由七个发光管组成8字形构成的,加上。这些段分别由字母a,b,c,d,e,f,g来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的 2个8数码管字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮。

表1 七段LED段码表 字符 共阴极 共阳极 字符 共阴极 共阳极 0 3FH C0H A 77H 88H 1 06H F9H B 7CH 83H 2 5BH A4H C 39H C6H 3 4FH B0H D 5EH A1H 4 66H 99H E 79H 86H 5 6DH 92H F 71H 8EH 6 7DH 82H H 76H 09H 7 07H F8H P 73H 8CH 8 7FH 80H U 3EH C1H 9 6FH 90H 灭 00H FFH 在实际的应用中,使用单个LED数码管的情况比较少,经常需要同时使用多个LED数码管来显示大于1位的数据或字符串。以4个LED数码管并列使用的情况为例。这4个数码管可以显示-999~9999之间的任何数字,也可以同时显示4个字符构成的字符串。可见使用多个LED数码管可以大大扩展显示的信息量。

3.4.2 七段数码管源程序及其仿真 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity led_controller is port(d:in std_logic_vector(3 downto 0); a:out std_logic_vector(6 downto 0)); end led_controller; architecture one of led_controller is begin process(d) begin case d is when “0000“=> a<= “0111111“;when “0001“=> a<= “0000110“; when “0010“=> a<= “1011011“;when “0011“=> a<= “1001111“; when “0100“=> a<= “1100110“;when “0101“=> a<= “1101101“; when “0110“=> a<= “1111101“;when “0111“=> a<= “0000111“; when “1000“=> a<= “1111111“;when “1001“=> a<= “1101111“; when “1010“=> a<= “1110111“;when “1011“=> a<= “1111100“; when “1100“=> a<= “0111001“;when “1101“=> a<= “1011110“; when “1110“=> a<= “1111001“;when “1111“=> a<= “1110001“; when others => null; end case; end process; end; 图7 七段数码管仿真波形 4 计数器顶层设计 4.1.1 基于VHDL的自顶向下的设计方法 所谓自顶向下设计方法,就是采用可完全独立于芯片厂商及其产品结构的描述语,在功能级对设计产品进行定义,并结合功能仿真技术,以确保设计的正确性,能定义完成后,利用逻辑综合技术,把功能描述转换成某一具体结构芯片的网表文件,输出给厂商的布局布线器进行布局布线。布局布线结果还可反标回同一仿真器,进行包括功能和时序的后验证,以保证布局布线所带来的门延时和线延时不会影响设计的性能。

自顶向下设计方法的优越性是显而易见的。首先,由于功能描述可完全独立于芯片结构,在设计的最初阶段,设计师可不受芯片结构的约束,集中精力进行产品设计,避免了传统设计方法所带来的重新再设计风险,大大缩短了设计周期。其次,设计的再利用得到保证。目前的电子产品正向模块化发展,所谓模块化就是对以往设计成果进行修改,组合和再利用,产生全新的或派生设计,而自顶向下设计方法的功能描述可与芯片结构无关。因此可以以一种IP的方式进行存档,以便将来的重新利用。

第三,设计规模大大提高。简单的语言描述即可完成复杂的功能,而不需要手工绘图。第四,芯片选择更加灵活。设计师可在较短的时间内采用各种结构芯片来完成同一功能描述,从而在设计规模、速度、芯片价格及系统性能要求等方面进行平衡,选择最佳结果。

4.1.2顶层设计源文件及其仿真波形 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith; use ieee.std_logic_signed; entity ccnntt is port(ena0,rst0:in std_logic; clk1,clk2:in std_logic; ledout:out std_logic_vector(27 downto 0); din: in std_logic_vector(7 downto 0); end entity; architecture one of ccnntt is component DVF port ( clk:in std_logic; DD : in std_logic_vector(7 downto 0); fout: out std_logic; component cnt10_4 port(clkk,rst,ena:in std_logic; d:out std_logic_vector(15 downto 0)); end component; component reg16b port(load: in std_logic; din : in std_logic_vector(15 downto 0); dout: out std_logic_vector(15 downto 0)); end component; component led_controller port(d:in std_logic_vector(3 downto 0); a:out std_logic_vector(6 downto 0)); end component; signal y:std_logic; signal b,h:std_logic_vector(15 downto 0); signal leds:std_logic_vector(27 downto 0); begin u1: DVF port map(clk=>clk1,DD=>din,fout=>y); u2: cnt10_4 port map(clkk=>y,rst=>rst0, ena=>ena0, d=>b); u3: reg16b port map(load=>clk2,din=>b(15 downto 0),dout=>h(15 downto 0)); u4:led_controller port map(d=>h(3 downto 0),a=>leds(6 downto 0)); u5: led_controller port map(d=>h(7 downto 4),a=>leds(13 downto 7)); u6: led_controller port map(d=>h(11 downto 8),a=>leds(20 downto 14)); u7: led_controller port map(d=>h(15 downto 12),a=>leds(27 downto 21)); ledout<=leds; end; 图8 总程序仿真波形 总 结 为期一周的课程设计结束啦,在整个计数器的设计实现过程中,学会了不少新的知识,同时也将所学的语言有了进一步的深刻理解,现在在这里谈一下自己的心得体会。

作为一个电子信息类专业的学生,FPGA是我们重要的课程,是我们将来从事电子设计的有力工具。通过对该课程的学习,我们对电子设计自动化有了更进一步的理解;
通过对数字滤波器的设计,我们也了解了计数器的基本结构和基本特性,而且更加牢固地掌握了相关的理论知识,同时也提高了自己的动手实践能力。这次课程设计,很重要的一部分就是quartus2的运用,为此学习了程序的基本操作,对于一般的设计、编译、仿真能够熟练掌握。

这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在同学的帮助以及自己的努力下,最终迎刃而解,同时,我也学到了很多实用的知识。

参考文献 [1]褚振勇. FPGA设计及应用(第三版)[M].西安电子科技大学出版社.2012,4 [2]陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版社.2008,1 [3]王新安.FPGA/CPLD最新实用技术指南(第一版)[M],北京:清华大学出版社,2005 [4]林明权.VHDL数字控制系统设计范例(第一版)[M]北京:电子工业出版社,2003年 [5]黄继业.EDA技术实用教程(第二版)[M],北京:科学出版社,2005年 [6]杨恒新.自顶向下法设计交通灯控制系统[J],电气电子教学学报,2006年第四期 [7]曾素琼.EDA技术在数字电路中的探讨[J],实验科学与技术,2005年第一期 [8]陈赜.PLD/FPGA与ASIC设计实践教程[M].北京:科学出版社,2005 [9]王金明.数字系统设计与Verilog HDL [M].北京:电子工业出版社,2009 附 录

推荐访问:计数器 电子技术 课程设计