数字系统设计学习之VHDL输入设计
前言
继续数字系统设计的学习,对QuartusII9的使用相对开始熟悉了很多,正好课程进度学习到了VHDL语言,尝试用VHDL语言完成板载测试,本次实现的功能是花式流水灯。
本文原创,创作不易,转载请注明!!!
本文链接
个人博客:https://ronglin.fun/?p=260
PDF链接:见博客网站
CSDN: https://blog.csdn.net/RongLin02/article/details/115432284
实现流水灯
创建project
用QuartusII 新建一个名为water_led的项目文件。
芯片照常选择FLEX10K
中的FLEX10K20TC144-4
,如果这里选错了后面也可以改的
接下来就是一路next就行了。
VHDL
新建文件
下面新建一个VHDL文件,菜单栏File
–New
–VHDL File
然后ok就行了。
效果设计和源码
首先我想的是实现一个8位led灯的流水灯,根据cp信号,从右到左,然后交替亮,最后变成全0,大概如下:
00000001
00000010
00000100
00001000
00010000
00100000
01000000
1000000010101010
01010101
11111111
00000000
大概我想实现的效果就是这样,然后开始头秃敲源码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;ENTITY water_led is --配置实体port(CLK,CLR : in std_logic;res : out std_logic_vector(7 downto 0));
end ;architecture func of water_led is --配置结构体
signal state : integer range 11 downto 0 := 0; --定义信号,全局量
beginprocess(CLR,CLK) --监听时钟信号和清0信号beginif CLR = '1' thenres <= "00000000";state <= 0;elsif CLK'event and CLK = '1' then --时钟变化且上升沿state <= state+1; --每次触发全局量自增if state < 8 thenres <= conv_std_logic_vector(2**state,8);elsif state = 8 thenres <= "10101010";elsif state = 9 thenres <= "01010101";elsif state = 10 thenres <= "11111111";elsif state = 11 thenres <= "00000000";state <= 0; --从头开始end if;end if;end process;
end func;
简单的提示一下细节和可能出现的问题:
就说一下这句代码res <= conv_std_logic_vector(2**state,8);
,函数conv_std_logic_vector()的作用是将整型转化为位矢量,第一个参数为要转化的整数,第二个参数是转化的位矢量的位宽。
问题可能有:
1.没法输入中文。可能是QuartusII9太老了,没法输入中文,可以先用记事本,输入好中文,然后copy过去。
2.信号变量延迟问题。编程过程中,代码逻辑没问题,但是仿真在第一轮循环之后总会多一个cp周期之后才开始第二轮的循环。刚开始并没有留意,板载的时候才明显的感受到,后来查了资料才知道,信号的赋值是有延迟的,仔细分析分析我的代码,在最后state <= 0;
之后,第二次循环开始,执行到state <= state+1;
如果按照软件设计思想,现在的state的值应该是1,然后res应该输出的值是2的1次方,就应该第二轮第一个值是2,但是不论看仿真还是看板载测试,都是从1开始,说明信号的赋值是延迟的。有关更多这篇博客有详细的说明:https://blog.csdn.net/qijitao/article/details/50629305
编译
编译之前需要简单的配置一下,如果之前选错了芯片的话,可以在Assignments
–Setting
中,左侧选择Device,然后就可以修改芯片了,如果还想修改更详细的配置,例如配置文件格式啥的,可以在右侧中的Device and Pin Opinions
中修改。
同时,教材上还提供了选择编译模式的方法。就是在Assignments
–Setting
中,选择左侧的Compilation Process Settings
,然后在右侧勾选上Use smart compilation
和Preserve fewer node names to save disk space
,据说可以让每一次重复编译运行的更快。
之后就是编译了,可以直接点击快捷栏的start Compilation
的倒三角按钮,也可以在菜单栏中Processing
中选择start Compilation
,一样的。
编译成功成功之后,还可以看生成的寄存器传输级(RTL),菜单栏Tool
–Netlist Viewers
–RTL Viewer
,就可以看到了。
仿真与板载
仿真和之前的一样了,菜单栏File
–New
–Vector Waveform File
然后ok就行了。
有关仿真波形图的使用,我的另一篇博客中有详细的讲解:数字系统设计学习之QuartusII9下载程序
只需注意时钟信号的设置方法,全选中CLK信号,在左侧找到一个带有小钟表的图标,名为Overwrite Clock
然后就可以设置时钟信号了。时钟时长设为1us,间隔设为50ns一变
直接看结果
循环是1-2-4-8-16-32-64-128-170-85-255-0,和我设计的一样。
在Assignments
–Pins
中选好阵脚,然后一定要记得再编译一次,查看板载测试,板载的时候一定要注意重启设置禁用数字签名
成功了,=w=
数字系统设计学习之VHDL输入设计相关推荐
- 数字系统设计学习之出租车计价器设计
前言 数字系统设计的大作业来了,用VHDL语言在实验板上实现一个出租车计价设计,有一些难度,大概花了几天时间,不过好在最后搞出来了,同时总结一下遇到的问题,为了排版整洁,源代码就放在最后放出了. 温馨 ...
- 象棋快棋赛电子裁判计时器的设计——《数字逻辑与数字系统设计》实验大作业设计报告
数电Github资源 <数字逻辑与数字系统设计>实验大作业设计报告 实验题目 象棋快棋赛电子裁判计时器的设计 实验难度 ★★ 成员 姓名 班号 学号 1 郭茁宁 1837101 11837 ...
- 数字系统设计学习之QuartusII9的安装
前言 学校开设数字系统设计科目,学习教材内容为EDA技术和VHDL设计,仅用于学习,本次记录QuartusII 9的安装,仅用于学习,如有侵权,请联系我删除,本次学习所需资料度盘: 链接:链接:htt ...
- VHDL||数字系统设计实验--基于VHDL的流水灯电路设计
实验目的: 学习设计一个流水灯电路,并在实验板验证. 学习简单时序电路的设计和硬件测试. 学习使用VHDL语言方法进行逻辑设计输入. 实验内容: 实验VHDL程序: LIBRARY IEEE; USE ...
- 基于Quartus II 软件(VHDL)设计
目录 一,基于 Quartus II 的数字系统设计流程 二,Quartus II 软件使用介绍 1. 建立工程 2. 设计输入 3. 编译 4. 时序仿真 quartus ii 安装请参考: Qua ...
- [渝粤教育] 西南科技大学 现代数字系统设计 在线考试复习资料2021版
现代数字系统设计--在线考试复习资料2021版 一.单选题 1. SOPC的中文意思是( ). A.电子设计自动化 B.硬件描述语言 C.片上可编程系统 D.片上系统 答案:看左边查询 2.XP ...
- [渝粤教育] 西南科技大学 现代数字系统设计 在线考试复习资料2021版(1)
现代数字系统设计--在线考试复习资料2021版 一.单选题 1. SOPC的中文意思是( ). A.电子设计自动化 B.硬件描述语言 C.片上可编程系统 D.片上系统 答案:看左边查询 2.XP ...
- 数字系统设计VHDL实验:洗衣机控制器的设计(简易版)
前言 学校布置的数字系统设计大作业,要求完成VHDL核心代码的设计,采用quartus II进行相关仿真并且在开发板上实现.由于本人能力有限,目的就是为了完成所要求的功能,就没有使用元件例化(同时也觉 ...
- 在VIVADO上实现的非常简易的RISC-V CPU设计(来自《Verilog数字系统设计》夏宇闻著)
在VIVADO上实现的非常简易的RISC-V CPU设计 一.实验要求重述: 1.实验目的 2.实验要求: 二.学习准备: 1.什么cpu? 2.cpu需要具有哪些部件? 3.什么是RISC_CPU? ...
最新文章
- 马斯克新视频:Boring公司将优先解决公交快速通勤
- phpexcel的自动加载与其他框架有冲突
- Construct Binary Tree from Inorder and Postorder Traversal
- PyTorch基础(13)-- torch.nn.Unfold()方法
- 2019牛客暑期多校训练营(第六场)C - Palindrome Mouse (回文树dfs)
- ProgressDialog知识要点
- Approximation and fitting、Statistical estimation
- 一个正则替换:一段文本中有若干a img标记,替换文本中的某些词,不包含除了a img标记 中的文字、属性...
- jquery_ui_api中文
- /usr/bin/env: escript: No such file or directory的解决办法
- pdf屏幕取词 android,金山词霸Android版更是独家实现了手机屏幕取词和摄像头取词功能...
- 很好用的绘图软件cad,非常喜欢这个简易方法
- veeam虚拟机备份及恢复
- 学习python需要很多数学知识吗_Python数据分析需要学习哪方面的数学知识
- 页面验证是否是真实有效的身份证号码
- 使用PHP生成PDF文档
- reduce()的基本用法
- arch linux 网络安装,Arch Linux 离线安装教程
- 史上最全Web端高保真动态交互Axure元件库
- Swing是一把刀(转载)