数字逻辑电路课程设计报告
数字逻辑电路课程设计报告
姓名 姜楠
学号 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面板上运行。检查是否出现错误,若没有,则实验顺利完成。
四.实验体会
- 碰到的问题
编写完VHDL代码后,对其编译,始终显示错误,检查代码无误,并重新创建wizard后,仍然无法通过编译。
解决:应当建立一个独立的文件夹,将文件存储在里面,否则,同级目录下出现其他不相关的文件,会影响编译。
将内容下载到FPGA后,无法正常运行。
解决:检查配置时发现,芯片型号配置错误,应该为CycloneIIEP2C35F672C8。
编写fmeter.bdf后,编译,但无法通过。
解决:检查错误时发现,存在多余的线头,部分连线没有真正连上。
- 实验收获
老师要求很严格,相比于其他专业,学生们只要从别人那里拷贝一下就可以顺利通过实验,我们的实验课不仅是在面包板上连线,而且还要学习如何使用Quartus软件,学习VHDL语言,利用FPGA来实现相应的功能。短短几次课学习到了很多知识。
首先,原先只学习软件知识,这几次实验使我对硬件描述语言有了初步认识,
拓展了对硬件的理解。
其次,提高了自身的学习能力和查错能力。很多时候,不知道接下来的步骤要如何完成,不知道自己完成的电路到底哪里出错,一心想着是不是我的仪器是坏的。最后在同学的帮助下,都顺利解决了。但过程却异常艰辛。看着同学的实验都验收了,自己的实验就是调试不对,心里急也没用,只能一步步检查。
- 建议
建议适时更新一下实验室配置,机器老了,应当及早维修。
而且应该为我们计算机学院单独配一个硬件实验室,而不是用其他学院的实验室。
电脑里有前人做实验留下的代码,有些人就这样用别人的成果水水地验收了。
建议及时清理硬盘。
转载于:https://www.cnblogs.com/ZJUT-jiangnan/p/3561191.html
数字逻辑电路课程设计报告相关推荐
- matlab设计理想数字带通滤波器,基于matlab的数字带通滤波器课程设计报告
基于matlab的数字带通滤波器课程设计报告 1 西安文理学院机械电子工程系 课程设计报告 专业班级 08级电子信息工程1班 题 目 基于 MATLAB 的数字带通滤波器 学 号 学生姓名 指导教师 ...
- matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc
数字图像处理课程设计实验报告 数字图像处理课程设计 题 目:数字图像处理及Huufman(或小波变换)编码仿真实现 学生姓名: 学 院:信息工程学院 系 别:电子信息工程系 专 业:电子信息工程 班 ...
- java猜数字游戏课程设计报告_Java程序设计课程设计-猜数字游戏设计.doc
Java程序设计课程设计-猜数字游戏设计.doc 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 课 程 设 计 报 告课程设计名称 Jav ...
- 数字图像处理课程设计报告
一.任务要求 输入一幅数字图像并使用DCT变换以不同的压缩比压缩图像,要求: 显示原图像和压缩后图像. 比较使用不同压缩比压缩的图像,讨论压缩比与图像质量间的关系. 计算并绘出不同压缩比下的均方误差M ...
- matlab数字图像处理课程设计报告,数字图像处理初步-实验1
MATLAB数字图像处理初步 通过实验对MatLab软件的基本使用基本的了解,学会使用MatLab软件来读取一个特定格式的图像,并通过相关的命令语句对图像进行格式转换.图像压缩.二值化等的处理,掌握利 ...
- 外部中断器微型计算机课程设计,基于51单片机汇编语言的数字钟课程设计报告(含有闹钟万年历)...
上图的"检测开关值→判断并显示→检测开关值"的循环时间大约为10ms,即每隔10ms检测一次开关值,每个数码管接收到的电压信号占空比大约为1/7,确保数码管正常显示.三个中断源中断 ...
- 在设计四人抢答器中灯全亮_数字电子技术课程设计报告(四人抢答器).doc
Word格式 完美整理 数字逻辑电路 课程设计报告 系 (部): 三 系 专 业: 通 信 工 程 班 级: 12 通 信 2 班 姓 名: 杨 超 学 号: 20120306201 成 绩: 指导老 ...
- 数字逻辑之数字时钟课程设计(含proteus仿真图及代码)
一.设计要求 1.设计一个能显示日期.小时.分钟.秒的数字电子钟,并具有整点报时的功能. 2.可手动校正时.分时间和日期值,时间以24小时为一个周期,有校时功能,可以分别对时及分进行单独校时,使其校 ...
- 大二c语言数电课程设计,数电课程设计报告(数字钟的设计).doc
数电课程设计报告(数字钟的设计).doc 数电课程设计报告 设计背景与要求 设计要求 系统概述 2.1设计思想与方案选择 2.2各功能块的组成 2.3工作原理 第三章 单元电路设计与分析 3.1各单元 ...
- 计算机组成原理电子时钟设计与实现,《计算机组成原理》课程设计报告-基于VHDL数字电子钟设计与实现.doc...
<计算机组成原理>课程设计报告-基于VHDL数字电子钟设计与实现 长沙理工大学 <计算机组成原理>课程设计报告 XXX 学 院 计算机与通信工程 专 业 网络工程 班 级 网络 ...
最新文章
- 提升销售人员的信息处理能力
- [导入]Ms XmlDom 异步装载Xml文件
- Ids4 认证保护 API 方案更新
- ERROR: cuda_runtime_api.h: No such file or directory
- 无法序列化会话状态。请注意,当会话状态模式为“StateServer”或“SQLServer”时,不允许使用无法序列化的对象或 MarshalByRef 对象。...
- stata导入数据问题
- Maven(一)之Maven入门
- 自动驾驶 4-4 纵向车辆建模Longitudinal Vehicle Modeling
- 高速电路逻辑电平转换设计
- 1、mysql创建事件
- css3 微信聊天小尖角,用CSS制作聊天框小尖角、气泡效果
- 中国安检设备行业市场发展分析及前景趋势展望报告2022-2028年
- 动手智能小车记(5)-坦克底盘硬件模块大杂烩
- python软件要钱吗-python语言是免费还是收费的?
- 验证邮箱格式html代码,jquery验证邮箱格式是否正确实例讲解
- Android短信Messaging数据库字段分析
- 聚焦数智化,企企通亮相2023中山市工业互联网数智化大会
- #Ant Design# 设计规范 设计原则
- 揭阳市人民医院基于对称双数据中心的双活容灾系统建设项目
- JavaScript从初级往高级走系列————prototype
热门文章
- 联发科被动“卡位”内地集成电路市场 剑指老对手展讯
- 从零开始撸一个Fresco之gif和Webp动画
- Java: JavaMail 初试(一)
- Mysql + keepalived 实现双主热备读写分离【转】
- 你不能忽视的HTML语言
- 一个研究生毕业以后的人生规划(ZT)
- Java基础语法总结(全)
- 论文阅读笔记——拥塞控制算法PCC Vivace
- erlang连接数据库mysql_[原]Erlang连接mysql问题解决
- android vmware 分辨率,android 常见分辨率与DPI对照表