前言

继续数字系统设计的学习,对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文件,菜单栏FileNewVHDL 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

编译

编译之前需要简单的配置一下,如果之前选错了芯片的话,可以在AssignmentsSetting中,左侧选择Device,然后就可以修改芯片了,如果还想修改更详细的配置,例如配置文件格式啥的,可以在右侧中的Device and Pin Opinions中修改。

同时,教材上还提供了选择编译模式的方法。就是在AssignmentsSetting中,选择左侧的Compilation Process Settings,然后在右侧勾选上Use smart compilationPreserve fewer node names to save disk space,据说可以让每一次重复编译运行的更快。

之后就是编译了,可以直接点击快捷栏的start Compilation的倒三角按钮,也可以在菜单栏中Processing中选择start Compilation,一样的。
编译成功成功之后,还可以看生成的寄存器传输级(RTL),菜单栏ToolNetlist ViewersRTL Viewer,就可以看到了。

仿真与板载

仿真和之前的一样了,菜单栏FileNewVector Waveform File然后ok就行了。
有关仿真波形图的使用,我的另一篇博客中有详细的讲解:数字系统设计学习之QuartusII9下载程序
只需注意时钟信号的设置方法,全选中CLK信号,在左侧找到一个带有小钟表的图标,名为Overwrite Clock

然后就可以设置时钟信号了。时钟时长设为1us,间隔设为50ns一变

直接看结果

循环是1-2-4-8-16-32-64-128-170-85-255-0,和我设计的一样。
AssignmentsPins中选好阵脚,然后一定要记得再编译一次,查看板载测试,板载的时候一定要注意重启设置禁用数字签名

成功了,=w=

数字系统设计学习之VHDL输入设计相关推荐

  1. 数字系统设计学习之出租车计价器设计

    前言 数字系统设计的大作业来了,用VHDL语言在实验板上实现一个出租车计价设计,有一些难度,大概花了几天时间,不过好在最后搞出来了,同时总结一下遇到的问题,为了排版整洁,源代码就放在最后放出了. 温馨 ...

  2. 象棋快棋赛电子裁判计时器的设计——《数字逻辑与数字系统设计》实验大作业设计报告

    数电Github资源 <数字逻辑与数字系统设计>实验大作业设计报告 实验题目 象棋快棋赛电子裁判计时器的设计 实验难度 ★★ 成员 姓名 班号 学号 1 郭茁宁 1837101 11837 ...

  3. 数字系统设计学习之QuartusII9的安装

    前言 学校开设数字系统设计科目,学习教材内容为EDA技术和VHDL设计,仅用于学习,本次记录QuartusII 9的安装,仅用于学习,如有侵权,请联系我删除,本次学习所需资料度盘: 链接:链接:htt ...

  4. VHDL||数字系统设计实验--基于VHDL的流水灯电路设计

    实验目的: 学习设计一个流水灯电路,并在实验板验证. 学习简单时序电路的设计和硬件测试. 学习使用VHDL语言方法进行逻辑设计输入. 实验内容: 实验VHDL程序: LIBRARY IEEE; USE ...

  5. 基于Quartus II 软件(VHDL)设计

    目录 一,基于 Quartus II 的数字系统设计流程 二,Quartus II 软件使用介绍 1. 建立工程 2. 设计输入 3. 编译 4. 时序仿真 quartus ii 安装请参考: Qua ...

  6. [渝粤教育] 西南科技大学 现代数字系统设计 在线考试复习资料2021版

    现代数字系统设计--在线考试复习资料2021版 一.单选题 1. SOPC的中文意思是(    ). A.电子设计自动化 B.硬件描述语言 C.片上可编程系统 D.片上系统 答案:看左边查询 2.XP ...

  7. [渝粤教育] 西南科技大学 现代数字系统设计 在线考试复习资料2021版(1)

    现代数字系统设计--在线考试复习资料2021版 一.单选题 1. SOPC的中文意思是(    ). A.电子设计自动化 B.硬件描述语言 C.片上可编程系统 D.片上系统 答案:看左边查询 2.XP ...

  8. 数字系统设计VHDL实验:洗衣机控制器的设计(简易版)

    前言 学校布置的数字系统设计大作业,要求完成VHDL核心代码的设计,采用quartus II进行相关仿真并且在开发板上实现.由于本人能力有限,目的就是为了完成所要求的功能,就没有使用元件例化(同时也觉 ...

  9. 在VIVADO上实现的非常简易的RISC-V CPU设计(来自《Verilog数字系统设计》夏宇闻著)

    在VIVADO上实现的非常简易的RISC-V CPU设计 一.实验要求重述: 1.实验目的 2.实验要求: 二.学习准备: 1.什么cpu? 2.cpu需要具有哪些部件? 3.什么是RISC_CPU? ...

最新文章

  1. 马斯克新视频:Boring公司将优先解决公交快速通勤
  2. phpexcel的自动加载与其他框架有冲突
  3. Construct Binary Tree from Inorder and Postorder Traversal
  4. PyTorch基础(13)-- torch.nn.Unfold()方法
  5. 2019牛客暑期多校训练营(第六场)C - Palindrome Mouse (回文树dfs)
  6. ProgressDialog知识要点
  7. Approximation and fitting、Statistical estimation
  8. 一个正则替换:一段文本中有若干a img标记,替换文本中的某些词,不包含除了a img标记 中的文字、属性...
  9. jquery_ui_api中文
  10. /usr/bin/env: escript: No such file or directory的解决办法
  11. pdf屏幕取词 android,金山词霸Android版更是独家实现了手机屏幕取词和摄像头取词功能...
  12. 很好用的绘图软件cad,非常喜欢这个简易方法
  13. veeam虚拟机备份及恢复
  14. 学习python需要很多数学知识吗_Python数据分析需要学习哪方面的数学知识
  15. 页面验证是否是真实有效的身份证号码
  16. 使用PHP生成PDF文档
  17. reduce()的基本用法
  18. arch linux 网络安装,Arch Linux 离线安装教程
  19. 史上最全Web端高保真动态交互Axure元件库
  20. Swing是一把刀(转载)

热门文章

  1. x264中I,P,B帧和PTS,DTS的关系
  2. LinkedIn 详细介绍了他们开源的 Kafka Monitor
  3. 印度朋友手把手教你学Scala(10):Scala里的样本对象
  4. C语言 基础60题(2)——二维数组操作
  5. 创业编程七个错误认识
  6. 几个高效做事的法则,让你的一天有 25 小时
  7. 好图表的标准是什么?手把手教你用GLAD原则优化一张看板
  8. 飞鸽传书已经写了5年,还是老样子。
  9. 飞鸽传书谈哈希表之数学原理
  10. 评测称IE8成内存消耗王 高出IE7一半 为火狐2倍