数字逻辑电路课程设计报告

姓名 姜楠

学号 201126100207

指导教师 贾立新

专业班级 计算机+自动化1101

学 院 计算机学院

提交日期 2013年 6月 6日

一、实验内容

1. 12进制计数器设计。

2. 数字频率计的设计。

二.12进制计数器设计

1.设计要求

用74LS192设计12进制加法计数器,计数值从01~12循环,用7段LED数码管显示计数值。用DEII实验板验证。

2.原理图设计

利用两个74LS192充当计数器的高位和低位,下图中左边的74LS192作为低位,右边的74LS192为高位.两片的输入端A,B,C,D均置数0,0,0,0,左边的74LS192输入频率为1kHZ的信号.

利用74LS47译码器,将传入的十进制信号直接翻译成7段显示码,输出接口接上7段显示管。

利用一个与非门实现十进制。当产生001011时设置清零端口有效

12进制加法计数器原理图如图1所示。

图1 12进制加法计数器原理图

3.操作步骤

.打开QuartusII软件,创建wizard,选择器件为CycloneIIEP2C35F672C8。新建 block Diagram/Schematic File,创建cnt12.bdf文件

. 将元器件74LS192,74LS47,与非门,输入输出引脚从library导入,连好图,修改输入输出引脚的名字。

进行全程编译,无误后启动"Assigment-Pin"菜单,配置引脚的location

分别为PIN-V13,PIN-V14,PIN-AE11,PIN-AD11,PIN-AC12,PIN-AB12,PIN-AF12.

在QuartusII软件选择"Tools"菜单下的"Programmer"命令。在下载之前,要进行硬件配置,在"Hardware Setting"中选择"USB-Blaster",将编程模式选择为"JTAG",并在"Program/Configure"复选框内打勾,便可点击"start"按钮,开始下载。

在FPGA上检验是否为12进制。

三.4位数字频率计设计

1.设计要求

设计4位数字频率计,测频范围0000~9999Hz。用DEII实验板验证。

2.数字频率计的工作原理

当闸门信号(宽度为1s的正脉冲)到来时,闸门开通,被测信号通过闸门送到计数器,计数器开始计数,当闸门信号结束时,计数器停止计数。由于闸门开通时间为1s,计数器的数值就是被测信号频率。为了使测得的频率值准确,在闸门开通之前,计数器必须清零。为了使显示电路稳定的显示频率值,计数器和显示电路之间加了锁存器,当计数器计数截止,将计数值通过锁存信号送到锁存器。

控制电路在时基电路的控制下产生三个信号:闸门信号,锁存信号和清零信号。

图2 数字频率计原理框图

图3 数字频率计原理框图工作时序

3.数字频率计顶层原理图设计

图中总共有四个不同的功能模块:CNT10,LATCH4,DECODER和CONTROL模块。

四个十进制计数器CNT10组成10000进制计数器,是频率计的测量范围达到0-9999Hz;

LATCH4模块用于锁存计数器计数结果;

DECODER模块将计数器输出的8421BCD码转换为7段显示码。

CONTROL模块为频率计的控制器,产生满足时序要求的控制信号。

图4 数字频率计顶层原理图

4.数字频率计底层模块仿真

(1)计数器模块仿真

Clk:时基信号

Clr:清零信号

Cs:片选信号,cs=1时才会计数。

图5 计数器模块仿真结果

(2)锁存器模块仿真

当le=1时将dd信号锁存到qq中。

图6 锁存器模块仿真结果

(3)显示译码模块仿真结果

将din传入的8421BCD码转换成7段显示码

图7 显示译码模块仿真结果

(4)控制模块仿真结果

控制电路在时基电路的控制下产生三个信号:闸门信号,锁存信号和清零信号。

图8 控制模块仿真结果

5.数字频率操作过程

1.打开QuartusII软件,创建wizard,选择器件为CycloneIIEP2C35F672C8。新建VHDL File,创建cnt10,latch4,decoder,control四个模块.

2. 编写VHDL代码.

CNT10:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt10 is

port(clk:in std_logic;

clr:in std_logic;

cs :in std_logic;

qq :buffer std_logic_vector(3 downto 0);

co :out std_logic);

end cnt10;

architecture one of cnt10 is

begin

process(clk,clr,cs)

begin

if (clr='1') then

qq<="0000";

elsif (clk'event and clk='1') then

if (cs='1') then

if (qq=9) then

qq<="0000";

else

qq<=qq+1;

end if;

end if;

end if;

end process;

process(qq)

begin

if (qq=9) then

co<= '0';

else

co<='1';

end if;

end process;

end;

Latch4:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY LATCH4 IS

PORT(le: IN STD_LOGIC;

dd: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

qq: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END LATCH4;

ARCHITECTURE one OF LATCH4 IS

BEGIN

PROCESS(le,dd)

BEGIN

IF (le='1') THEN

qq<=dd;

END IF;

END PROCESS;

END one;

Decoder:

library ieee;

use ieee.std_logic_1164.all;

entity decoder is

port(din:in std_logic_vector(3 downto 0);

led7s:out std_logic_vector(6 downto 0)

);

End;

architecture one of decoder is

begin

process(din)

begin

case din is

when "0000"=>led7s<="1000000";

when "0001"=>led7s<="1111001";

when "0010"=>led7s<="0100100";

when"0011"=>led7s<="0110000";

when"0100"=>led7s<="0011001";

when"0101"=>led7s<="0010010";

when"0110"=>led7s<="0000010";

when"0111"=>led7s<="1111000";

when"1000"=>led7s<="0000000";

when"1001"=>led7s<="0010000";

when"1010"=>led7s<="0001000";

when"1011"=>led7s<="0000011";

when"1100"=>led7s<="1000110";

when"1101"=>led7s<="0100001";

when"1110"=>led7s<="0000110";

when"1111"=>led7s<="0001110";

when others=>led7s<=null;

end case;

end process;

end;

Control:

library ieee;

use ieee.std_logic_1164.all;

entity control is

port(clk: in std_logic;

cs,clr,le: out std_logic);

end control;

architecture behav of control is

signal current_state,next_state:std_logic_vector(3 downto 0);

constant st0:std_logic_vector :="0011" ;

constant st1:std_logic_vector :="0010";

constant st2:std_logic_vector :="0110";

constant st3:std_logic_vector :="0111";

constant st4:std_logic_vector :="0101";

constant st5:std_logic_vector :="0100";

constant st6:std_logic_vector :="1100";

constant st7:std_logic_vector :="1101";

constant st8:std_logic_vector :="1111";

constant st9:std_logic_vector :="1110";

begin

com1:process(current_state)

begin

case current_state is

when st0=>next_state<=st1; clr<='1'; cs<='0'; le<='0';

when st1=>next_state<=st2; clr<='0'; cs<='1'; le<='0';

when st2=>next_state<=st3; clr<='0'; cs<='1'; le<='0';

when st3=>next_state<=st4; clr<='0'; cs<='1'; le<='0';

when st4=>next_state<=st5; clr<='0'; cs<='1'; le<='0';

when st5=>next_state<=st6; clr<='0'; cs<='1'; le<='0';

when st6=>next_state<=st7; clr<='0' ; cs<='1'; le<='0';

when st7=>next_state<=st8; clr<='0'; cs<='1'; le<='0';

when st8=>next_state<=st9; clr<='0'; cs<='1'; le<='0';

when st9=>next_state<=st0; clr<='0'; cs<='0'; le<='1';

when others=>next_state<=st0; clr<='0'; cs<='0'; le<='0';

end case;

end process com1;

reg: process(clk)

begin

if (clk'event and clk='1') then

current_state<=next_state;

end if;

end process reg;

end behav;

3.对各个子模块进行编译,若出现错误,则首先排查VHDL是否正确。

4.上一步成功编译后,再进行仿真。创建Vector Waveform File,确定仿真时间(End Time)和网格宽度(Grid Size),在列表处加入输入输出节点(Insert Node Or Bus),并配置输入波形,最后开始仿真(Start Simulation)。

5.仿真结果正确后,生成相应的模块符号,以便在顶层图中使用。

6.各个子模块完成后,创建fmeter.bdf.将各个子模块导入到文件中,并按照顶层原理图所示,正确布局和连接线路。设置fmeter.bdf为顶层并编译。

7.上一步正确后,开始分配引脚,打开Pin选项,为每一个Node设置Location,设置规则参考书本附录。

8.打开Programmer,将fmeter的配置下载到CycloneII芯片内,在FPGA面板上运行。检查是否出现错误,若没有,则实验顺利完成。

四.实验体会

  1. 碰到的问题

    编写完VHDL代码后,对其编译,始终显示错误,检查代码无误,并重新创建wizard后,仍然无法通过编译。

    解决:应当建立一个独立的文件夹,将文件存储在里面,否则,同级目录下出现其他不相关的文件,会影响编译。

    将内容下载到FPGA后,无法正常运行。

    解决:检查配置时发现,芯片型号配置错误,应该为CycloneIIEP2C35F672C8。

    编写fmeter.bdf后,编译,但无法通过。

    解决:检查错误时发现,存在多余的线头,部分连线没有真正连上。

  2. 实验收获

    老师要求很严格,相比于其他专业,学生们只要从别人那里拷贝一下就可以顺利通过实验,我们的实验课不仅是在面包板上连线,而且还要学习如何使用Quartus软件,学习VHDL语言,利用FPGA来实现相应的功能。短短几次课学习到了很多知识。

    首先,原先只学习软件知识,这几次实验使我对硬件描述语言有了初步认识,

    拓展了对硬件的理解。

    其次,提高了自身的学习能力和查错能力。很多时候,不知道接下来的步骤要如何完成,不知道自己完成的电路到底哪里出错,一心想着是不是我的仪器是坏的。最后在同学的帮助下,都顺利解决了。但过程却异常艰辛。看着同学的实验都验收了,自己的实验就是调试不对,心里急也没用,只能一步步检查。

  3. 建议

    建议适时更新一下实验室配置,机器老了,应当及早维修。

    而且应该为我们计算机学院单独配一个硬件实验室,而不是用其他学院的实验室。

    电脑里有前人做实验留下的代码,有些人就这样用别人的成果水水地验收了。

    建议及时清理硬盘。

转载于:https://www.cnblogs.com/ZJUT-jiangnan/p/3561191.html

数字逻辑电路课程设计报告相关推荐

  1. matlab设计理想数字带通滤波器,基于matlab的数字带通滤波器课程设计报告

    基于matlab的数字带通滤波器课程设计报告 1 西安文理学院机械电子工程系 课程设计报告 专业班级 08级电子信息工程1班 题 目 基于 MATLAB 的数字带通滤波器 学 号 学生姓名 指导教师 ...

  2. matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc

    数字图像处理课程设计实验报告 数字图像处理课程设计 题 目:数字图像处理及Huufman(或小波变换)编码仿真实现 学生姓名: 学 院:信息工程学院 系 别:电子信息工程系 专 业:电子信息工程 班 ...

  3. java猜数字游戏课程设计报告_Java程序设计课程设计-猜数字游戏设计.doc

    Java程序设计课程设计-猜数字游戏设计.doc 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 课 程 设 计 报 告课程设计名称 Jav ...

  4. 数字图像处理课程设计报告

    一.任务要求 输入一幅数字图像并使用DCT变换以不同的压缩比压缩图像,要求: 显示原图像和压缩后图像. 比较使用不同压缩比压缩的图像,讨论压缩比与图像质量间的关系. 计算并绘出不同压缩比下的均方误差M ...

  5. matlab数字图像处理课程设计报告,数字图像处理初步-实验1

    MATLAB数字图像处理初步 通过实验对MatLab软件的基本使用基本的了解,学会使用MatLab软件来读取一个特定格式的图像,并通过相关的命令语句对图像进行格式转换.图像压缩.二值化等的处理,掌握利 ...

  6. 外部中断器微型计算机课程设计,基于51单片机汇编语言的数字钟课程设计报告(含有闹钟万年历)...

    上图的"检测开关值→判断并显示→检测开关值"的循环时间大约为10ms,即每隔10ms检测一次开关值,每个数码管接收到的电压信号占空比大约为1/7,确保数码管正常显示.三个中断源中断 ...

  7. 在设计四人抢答器中灯全亮_数字电子技术课程设计报告(四人抢答器).doc

    Word格式 完美整理 数字逻辑电路 课程设计报告 系 (部): 三 系 专 业: 通 信 工 程 班 级: 12 通 信 2 班 姓 名: 杨 超 学 号: 20120306201 成 绩: 指导老 ...

  8. 数字逻辑之数字时钟课程设计(含proteus仿真图及代码)

    一.设计要求 1.设计一个能显示日期.小时.分钟.秒的数字电子钟,并具有整点报时的功能.  2.可手动校正时.分时间和日期值,时间以24小时为一个周期,有校时功能,可以分别对时及分进行单独校时,使其校 ...

  9. 大二c语言数电课程设计,数电课程设计报告(数字钟的设计).doc

    数电课程设计报告(数字钟的设计).doc 数电课程设计报告 设计背景与要求 设计要求 系统概述 2.1设计思想与方案选择 2.2各功能块的组成 2.3工作原理 第三章 单元电路设计与分析 3.1各单元 ...

  10. 计算机组成原理电子时钟设计与实现,《计算机组成原理》课程设计报告-基于VHDL数字电子钟设计与实现.doc...

    <计算机组成原理>课程设计报告-基于VHDL数字电子钟设计与实现 长沙理工大学 <计算机组成原理>课程设计报告 XXX 学 院 计算机与通信工程 专 业 网络工程 班 级 网络 ...

最新文章

  1. 提升销售人员的信息处理能力
  2. [导入]Ms XmlDom 异步装载Xml文件
  3. Ids4 认证保护 API 方案更新
  4. ERROR: cuda_runtime_api.h: No such file or directory
  5. 无法序列化会话状态。请注意,当会话状态模式为“StateServer”或“SQLServer”时,不允许使用无法序列化的对象或 MarshalByRef 对象。...
  6. stata导入数据问题
  7. Maven(一)之Maven入门
  8. 自动驾驶 4-4 纵向车辆建模Longitudinal Vehicle Modeling
  9. 高速电路逻辑电平转换设计
  10. 1、mysql创建事件
  11. css3 微信聊天小尖角,用CSS制作聊天框小尖角、气泡效果
  12. 中国安检设备行业市场发展分析及前景趋势展望报告2022-2028年
  13. 动手智能小车记(5)-坦克底盘硬件模块大杂烩
  14. python软件要钱吗-python语言是免费还是收费的?
  15. 验证邮箱格式html代码,jquery验证邮箱格式是否正确实例讲解
  16. Android短信Messaging数据库字段分析
  17. 聚焦数智化,企企通亮相2023中山市工业互联网数智化大会
  18. #Ant Design# 设计规范 设计原则
  19. 揭阳市人民医院基于对称双数据中心的双活容灾系统建设项目
  20. JavaScript从初级往高级走系列————prototype

热门文章

  1. 联发科被动“卡位”内地集成电路市场 剑指老对手展讯
  2. 从零开始撸一个Fresco之gif和Webp动画
  3. Java: JavaMail 初试(一)
  4. Mysql + keepalived 实现双主热备读写分离【转】
  5. 你不能忽视的HTML语言
  6. 一个研究生毕业以后的人生规划(ZT)
  7. Java基础语法总结(全)
  8. 论文阅读笔记——拥塞控制算法PCC Vivace
  9. erlang连接数据库mysql_[原]Erlang连接mysql问题解决
  10. android vmware 分辨率,android 常见分辨率与DPI对照表