10进制加减计数器状态机的VHDL设计
VerilogHDL十进制计数器实验Quartus非常详细的步骤

实验二十进制计数器实验该实验将使用Verilog 硬件描述语言在DE2-70 开发平台上设计一个基本时序逻辑电路——1 位十进制计数器。
通过这个实验,读者可以了解使用Quartus 工具设计硬件的基本流程以及使用Quartus II 内置的工具进行仿真的基本方法和使用SignalTap II 实际观察电路运行输出情况。
SignalTap II 是Quartus 工具的一个组件,是一个片上的逻辑分析仪,可以通过JTAG 电缆将电路运行的实际输出传回Quartus 进行观察,从而省去了外界逻辑分析仪时的很多麻烦。
实验步骤3.1建立工程并完成硬件描述设计1. 打开Quartus II 工作环境,如图3-1 所示。
图3-1 Quartus II工作环境界面2. 点击菜单项File->New Project Wizard 帮助新建工程。
参看图3-2。
图3-2 选择New Project Wizard打开Wizard 之后,界面如图3-3 所示。
点击Next,如图3-3。
第23 页共208 页图3-3 New Project Wizard界面3. 输入工程工作路径、工程文件名以及顶层实体名。
这次实验会帮助读者理解顶层实体名和工程名的关系,记住目前指定的工程名与顶层实体名都是Counter10,输入结束后,如图3-4 所示。
点击Next。
图3-4输入设计工程信息4. 添加设计文件。
界面如图3-5 所示。
如果用户之前已经有设计文件(比如.v 文件)。
第24 页共208 页那么再次添加相应文件,如果没有完成的设计文件,点击Next 之后添加并且编辑设计文件。
图3-5添加设计文件5. 选择设计所用器件。
由于本次实验使用Altera 公司提供的DE2-70 开发板,用户必须选择与DE2-70 开发板相对应的FPGA 器件型号。
在Family 菜单中选择Cyclone II,Package 选FBGA,Pin Count 选896,Speed grade 选6,确认Available devices 中选中EP2C70F896C6,如图3-6。
VHDL语言10进制计数器

VHDL语言10进制计数器以下是为大家整理的VhDL语言10进制计数器的相关范文,本文关键词为VhDL,语言,进制,计数器,课程,设计,任务书,学生,姓名,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
课程设计任务书学生姓名:黄思羽专业班级:自动化0607指导教师:李向舜工作单位:自动化学院题目:10进制计数器初始条件:1.Quartus4.1以上版本软件;2.课程设计辅导资料:“数字电路eDA 入门”、“VhDL程序实例集”、“eDA技术与VhDL”、“eDA与数字系统设计”等;3.先修课程:电路、电子设计eDA、电子技术基础等。
4.主要涉及的知识点:门电路、组合逻辑电路、时序逻辑电路等。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.课程设计时间:1周;2.课程设计内容:根据指导老师给定的题目,按规定选择其中1套完成;3.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(仿真结果),并对实验结果进行分析和总结。
具体设计要求包括:①复习eDA的相关技术与方法;②掌握VhDL或者Verilog语言,并要求能编写程序。
③Quartus软件的使用:掌握程序编辑、编译、调试、仿真方法。
④设计相关简单的电路,完成既定的功能。
4.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:①目录;②计数器相关的理论分析、归纳和总结;③10进制计数器的结构组成及原理分析。
④程序设计框图、程序代码(含注释);⑤给出程序中主要函数或者语句的功能说明和使用说明;⑥给出程序仿真运行结果和图表、以及实验结果分析和总结;⑦课程设计的心得体会(至少500字);⑧参考文献;⑨其它必要内容等。
Verilog_HDL十进制计数器实验Quartus90非常详细的步骤

页 802 共 页 73 第 图击点、noitalipmoc trats>-gnissecorP 项单菜击点。件文译编全�后配分脚引成完 .22 。制控动手关开用使�波方频低出输接直法办有没板发开 07_2ED�关相 kcolc�意注 图脚引配分 63-3 图
绿个
。42V 是不 42Y 意注�63-3 图考参�一验实考 参�。]0[WS 关开接 klc�]0[YEK 接 n_tsr�]4[GDEL 接 wolfrevo �上�]0[GDEL-]3[GDEL� DEL 4 的板发开 07-2ED 到置配出输 q 的器数计将�册手导指户用 07-2ED 的供 提所据根。作操的脚引配分行进以可�后确正能功认确�后成完真仿。脚引置配 .12 果结真仿 53-3 图
为设制强 标图侧左击单�号信 n_tsr 中选。平电高续持后 sn02 低成改 n_tsr 将 .61
置设期周的钟时 72-3 图
。率比间时的占所内之期周个一在平电高指是即�比 空占是思意的 elcyc ytuD。72-3 图如�sn02 为整调期周把中框话对定设 kcolc 的出弹在 波方为改 klci 将 62-3 图
。件文计设辑编且并加添后之 txeN 击点�件文计设的成完有没果如�件文应相加添次再么那 验实器数计制进十 二验实
页 802 共 页 62 第 正户用现出会中栏签标 yhcrareiH 的 rotagivaN tcejorP 中面界 II sutrauQ�后建新成完在 结总程工建新 8-3 图
。建新成完 hsiniF 击点后认确�示所 8-3 图如�计设的前之对 核户用让结总个一成生动自会 II sutrauQ�后成完计设本基在。结总程工建新看查 .7 具工 ADE 置设 7-3 图
验实器数计制进十 二验实
vhdl通用十进制加法器

湖南人文科技学院课程设计报告课程名称:VHDL语言与EDA课程设计设计题目:通用十进制加法器系别:通信与控制工程系专业:电子信息工程班级:学生姓名:学号:起止日期:指导教师:教研室主任:指导教师评语:指导教师签名:年月日成绩评定项目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总成绩教研室审核意见:教研室主任签字:年月日教学系审核意见:主任签字:年月日摘要随着科技的发展,通用十进制加法器的应用已广泛融入到现实生活中。
EDA 技术的应用引起电子产品及系统开发的革命性变革。
本文采用EDA技术设计,并以VHDL语言为基础制作的通用十进制加法器。
该系统借助于强大的EDA工具和硬件描述语言可实现两个一位以上的十进制数的加法,在输入两个十进制数之后,给出两个数的相加结果。
本设计充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,提高了设计的效率。
设计主要步骤:首先利用QUARTUS‖来编辑、编译、仿真各个模块;然后以原理图为顶层文件建立工程,再进行引脚锁定、编译、下载,最后采用杭州康芯电子有限公司生产的GW48系列/SOPC/EDA实验开发系统,进行硬件测试。
关键词:通用十进制加法器;EDA技术;VHDL语言; QUARTUS‖目录设计要求 (1)1、方案论证与对比 (1)1.1方案一 (1)1.2方案二 (1)1.3 方案的对比与选择 (2)2、设计原理 (2)3、通用十进制加法器的主要硬件模块 (3)3.1 4位BCD码全加器模块 (3)3.2八加法器的实现框图 (3)4、调试与操作 (4)4.1通用十进制加法器的功能仿真 (4)4.2模式选择与引脚锁定 (4)4.2.1模式选择 (4)4.2.2引脚锁定 (5)4.3设备与器件明细表 (6)4.4调试 (6)4.4.1软件调试 (6)4.4.2硬件调试 (6)5、总结与致谢 (7)5.1总结与思考 (7)5.2致谢 (7)附录 (8)附录一 (8)附录二 (9)参考文献 (11)通用十进制加法器设计要求1、用VHDL 硬件描述语言设计4位的BCD 码全加器;2、以4位BCD 码全加器为模块设计两位十进制数的加法。
VHDL一般加法计数器设计

一般加法计数器设计
【例4-22】
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK,RST,EN : IN STD_LOGIC;
CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
一般加法计数器设计
1.1 相关语法说明
1. 变量 VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0)
2. 省略赋值操作符(OTHERS=>X) SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); ... d1 <= (OTHERS=>'0'); a1 := (OTHERS=>'0') ;
d1 <= (1=>e(3),3=>e(5), OTHERS=>e(1) ); f <= e(1) & e(5) & e(1) & e(3) 器设计
1.2 程序分析
图4-14 例4-22的RTL电路(Synplify综合)
一般加法计数器设计
1.2 程序分析
1.0μs
1.5μs
检测是否小于9
--大于9,
计数值清零
END IF;
END IF;
END IF;
IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号
10进制加减计数器状态机的VHDL设计

10进制加减计数器状态机的VHDL设计一、【设计目的】学习并掌握Quartus II 开发系统的基本操作。
掌握用Quartus II进行文本输入法进行电路设计、编译和仿真方法。
掌握CPLD/FPGA的开发流程。
掌握EDA实验开发系统的使用。
掌握状态机的原理。
掌握简单状态机的VHDL设计方法掌握计数器的设计方法。
掌握带有复位和和时钟使能的10进制计数器的原理。
掌握通用计数器的设计方法。
学习使用VHDL进行时序逻辑电路的设计。
学习利用真值表编写VHDL程序。
学习掌握7段数码显示译码器设计的原理。
掌握VHDL语言方式设计7段数码显示译码器。
学习掌握8位数码管动态扫描显示电路的原理。
掌握VHDL语言设计8位数码管动态扫描显示电路学习VHDL语言设计较复杂的电路方法。
二、【设计任务】设计要求用VHDL语言设计一个状态机,要求具有以下状态和功能中的四种或者四种以上:A.复位功能B.8、10或者16进制加法计数C.8、10或者16进制减法计数D.数码管以任何方式闪动E.8个LED灯以任何方式闪动F.蜂鸣器发声或者播放一段音乐G.并用两位数码管将结果显示出来本次设计选用的功能状态为:A.复位功能B.十进制加法计数C.十进制减法计数D.数码管闪动E.8个led灯闪动F.并用两位数码管将结果显示出来功能实现说明Clk为50MHz的时钟信号输入;rst为复位控制按键(低电平有效);en(0-2)通过三个按键分别控制3种状态(低电平有效)。
1.当en(0)=`0`时,启动加法计数并将结果动态显示到两位数码管上,同时另外的两位数码管的6段以相反方向按顺序闪烁2.当en(1)=`0`时,启动减法计数并将结果动态显示到两位数码管上,同时另外的两位数码管的6段以相反方向按顺序闪烁,闪烁方向与加法的相反;3.当en(2)=`0`时,启动LED闪烁功能,LED灯按顺序逐个流水闪动;4.当rst=`0`时,复位清零;三、【设计代码】library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-----------------------------------------------------------------------------ENTITY cnt16 ISPORT (clk : IN std_logic; --50MHz时钟信号输入rst : IN std_logic; ---复位功能输入en : IN std_logic_vector(2 DOWNTO 0); ---状态选择输入led8 : OUT std_logic_vector(7 DOWNTO 0); --各段数据输出com8 : OUT std_logic_vector(7 DOWNTO 0)); ---各位数据输出END cnt16;-----------------------*****对各个信号进行定义****------------------------------------- ARCHITECTURE arch OF cnt16 ISsignal cnt : std_logic_vector(25 downto 0 );signal data : std_logic_vector(3 downto 0);signal led8_xhdl : std_logic_vector(7 downto 0);signal com8_xhdl : std_logic_vector(7 downto 0);signal coud1 : std_logic_vector(3 downto 0);signal coud2 : std_logic_vector(3 downto 0);signal s1 : std_logic;signal s2 : std_logic;signal s3 : std_logic;signal coud : std_logic_vector(3 downto 0);signal first : std_logic_vector(3 downto 0); --0000signal second : std_logic_vector(3 downto 0); --0000 0000 0000 1001 signal jinwei: std_logic;------------------------------------------------------------------------------------------------------------- beginled8<=led8_xhdl;com8<=com8_xhdl;----------------------- *****状态控制部分*************--------------------------------------------- process(en)beginif en="110"then ----状态控制,低电平有效s1<='1';s2<='0';s3<='0';else if en="101"thens2<='1';s1<='0';s3<='0';else if en="011"thens3<='1';s1<='0';s2<='0';end if;end if;end if;end process;-------------------------------------------------------------------------------------------------------------------------------**********时钟分频部分********----------------------------------process(clk,rst)beginif(rst='0')thencnt<="00000000000000000000000000";elsif(clk'event and clk='1')thencnt<=cnt+1; -----来一个时钟信号cnt加1end if;end process;----------------------------------------------------------------------------------------------------------------------*****-加减计数器的个位-*******------------------------------- process(cnt(24),rst,s1,s2)beginif(rst='0')thenfirst<="0000";jinwei<='0';elsif(cnt(24)'event and cnt(24)='1')then ---每隔(1/50)*48=0.96s计数一次if (s1='1')thenif(first="1001")then ---10进制计数first<="0000";jinwei<='1';elsejinwei<='0';first<=first+1; ---加法计数end if;else if(s2='1')thenif(first="0000")thenfirst<="1001";jinwei<='1';elsejinwei<='0';first<=first-1; ---减法计数end if;end if;end if;end if;end process;-------------------------------------------------------------------------------------------------------------------*********-加减计数器的十位*******-------------------------- process(jinwei,rst,s1,s2)beginif(rst='0')thensecond<="0000";elsif(jinwei'event and jinwei='1')then ---每来1个位产生的进位信号则十位加(减)1if (s1='1')thenif(second="1001")thensecond<="0000";elsesecond<=second+1;end if;else if(s2='1')thenif(second="0000")thensecond<="1001";elsesecond<=second-1;end if;end if;end if;end if;end process;------------------------------------------------------------------------------------------------------------------------------------------------*****闪动数码管的计数***--------------------------------------- process(cnt(23),rst,s1,s2)beginif(rst='0')thencoud<="0000";else if(cnt(23)'event and cnt(23)='1')then ----每隔(1/50)*46=0.92s计数一次if(s1='1')thenif(coud="0101")thencoud<="0000";elsecoud<=coud+1;end if;else if(s2='1')thenif(coud="0000")thencoud<="0101";elsecoud<=coud-1;end if;end if;end if;end if;end if;end process;--------------------------------------------------------------------------------------------------------------------------***码变换****---------------------------------------------process(coud,rst)begincase coud iswhen"0000" => coud1<="1010";coud2<="1010";when"0001" => coud1<="1011";coud2<="1111";when"0010" => coud1<="1100";coud2<="1110";when"0011" => coud1<="1101";coud2<="1101";when"0100" => coud1<="1110";coud2<="1100";when"0101" => coud1<="1111";coud2<="1011";when others => coud1<="0000";coud2<="0000";end case;end process;--------------------------------------------------------------------------------------------****************显示部分***************--process(rst,s1,s2,s3,cnt(17 downto 16),cnt(25 downto 23))beginif(rst='0')thencom8_xhdl<="11110000";led8_xhdl <= "00000000";else if s1='1'or s2='1'then ----计数以及数码管闪动部分的扫描case cnt(17 downto 16) iswhen"10" => com8_xhdl<="11111110";data<=first;when"01" => com8_xhdl<="11111101";data<=second;when"00" => com8_xhdl<="01111111";data<=coud1;when"11" => com8_xhdl<="10111111";data<=coud2;end case;case data isWHEN "0000" =>led8_xhdl <= "00111111"; --0WHEN "0001" =>led8_xhdl <= "00000110"; --1WHEN "0010" =>led8_xhdl <= "01011011"; --2WHEN "0011" =>led8_xhdl <= "01001111"; --3WHEN "0100" =>led8_xhdl <= "01100110"; --4WHEN "0101" =>led8_xhdl <= "01101101"; --5WHEN "0110" =>led8_xhdl <= "01111101"; --6WHEN "0111" =>led8_xhdl <= "00000111"; --7WHEN "1000" =>led8_xhdl <= "01111111"; --8WHEN "1001" =>led8_xhdl <= "01101111"; --9WHEN "1010" =>led8_xhdl <= "00000001";WHEN "1011" =>led8_xhdl <= "00000010";WHEN "1100" =>led8_xhdl <= "00000100";WHEN "1101" =>led8_xhdl <= "00001000";WHEN "1110" =>led8_xhdl <= "00010000";WHEN "1111" =>led8_xhdl <= "00100000";WHEN OTHERS =>led8_xhdl <= "00000011";END CASE;else if s3='1'then ----8个LED灯闪动的扫描,闪动周期为0.92s-1s case cnt(25 downto 23) iswhen"000" => com8_xhdl<="11111110";led8_xhdl<="10000000" ;when"001" => com8_xhdl<="11111101";led8_xhdl<="10000000" ;when"010" => com8_xhdl<="11111011";led8_xhdl<="10000000" ;when"011" => com8_xhdl<="11110111";led8_xhdl<="10000000" ;when"100" => com8_xhdl<="11101111";led8_xhdl<="10000000" ;when"101" => com8_xhdl<="11011111";led8_xhdl<="10000000" ;when"110" => com8_xhdl<="10111111";led8_xhdl<="10000000" ;when"111" => com8_xhdl<="01111111";led8_xhdl<="10000000" ;end case;end if;end if;end if;end process;end arch;。
vhdl 十进制表示数值

vhdl 十进制表示数值VHDL是一种硬件描述语言,用于描述数字系统中的电子元件和系统。
在数字系统中,我们经常需要使用十进制数值。
本文将逐步介绍VHDL中如何表示和处理十进制数值。
第一步:引入库文件在VHDL中表示和处理十进制数值之前,我们首先需要引入一些库文件。
这些库文件中包含了与数字处理相关的函数和类型定义。
在VHDL中,我们可以使用IEEE库或者numeric_std库。
例如,在代码的开头,我们可以添加以下语句引入numeric_std库:vhdllibrary ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;第二步:定义信号和变量在VHDL中,我们可以使用信号(signal)或者变量(variable)来表示数字数值。
两者之间的主要区别是信号是异步的,并且在赋值后需要一个过程来处理信号,而变量是同步的,并且可以直接进行赋值。
我们可以使用以下语法定义信号或变量:vhdl定义信号signal my_signal : integer;定义变量variable my_variable : integer;第三步:赋值和初始化在VHDL中,我们可以使用等号来给信号或变量赋值。
赋值的过程应当在信号或变量声明之后进行。
vhdl信号赋值my_signal <= 10;变量赋值my_variable := 10;需要注意的是,信号赋值是异步赋值,也就是说,当信号赋值后,它的值需要等到下一个时钟周期才能生效。
而变量赋值是同步赋值,它的值立即生效。
如果我们想要在VHDL中对信号或变量进行初始化,我们可以使用默认值或者在过程体中进行赋值。
vhdl使用默认值初始化信号signal my_signal : integer := 0;在过程体中初始化变量process isbeginmy_variable := 0;end process;第四步:运算操作VHDL中,我们可以使用常规的算术和逻辑运算符来操作十进制数值。
FPGA—基于HDL的十进制计数器设计

基于HDL的十进制计数器设计一、实验目的1、掌握基于语言的ISE设计全流程;2、熟悉、应用VerilogHDL描述数字电路;3、掌握基于Verilog的组合和时序逻辑电路的设计方法。
4、掌握chipscope片内逻辑分析仪的使用与调试方法。
5、设计具有异步复位、同步使能的十进制计数器,其计数结果可以通过七段数码管、发光二极管等进行显示。
二、实验原理1、十进制计数器的设计即是设置一变量,当计数脉冲上升沿到来时,先判断是否为9,若是则置零,否则就进行加一操作。
将变量再进行一个译码操作输出到数码管显示即可。
图1 实验原理图2、数码管分为7 段和8 段,七段数码管由7段二极管组成。
8段数码管比起7段数码管多了一个显示小数点的LED。
数码管按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。
本实验使用共阳数码管。
它是指将一切发光二极管的阳极接到一同构成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到电源VCC 上,当某一字段发光二极管的阴极为低电平相应字段就点亮。
当某一字段的阴极为高电平相应字段就不亮。
共阳端可以作为位选端,实现动态扫描。
动态扫描即是利用了人眼睛的视觉暂留现象,以合适的频率显示每一位数码管,便会产生所有数码管是一起点亮的错觉,数码管原理图如图:图2共阳数码管示意图3、数码管显示数字与对应的输入数据的关系如表所示:0 8'hc01 8'hf92 8'ha43 8'hb04 8'h995 8'h926 8'h827 8'hf8表1 数码管显示表4、本次设计一共有11个端口:输入信号:clk -------待计数的时钟。
clr ---------异步清零信号,当clr=1,输出复位为0,当clr=0,正常计数。
ena---------使能控制信号,当ena=1,电路正常累加计数,否则电路不工作。
输出信号:q[6:0]---------驱动数码管,显示计数值的个位。