实验一:38译码器的VHDL实现及原理图实现
第一次实验
- 一、QUARTUS II的简单上手及基本操作
- 1、项目的创建
- 2、两种方法实现38译码器
- 一、纯原理图法
- 1.1**新建一个图形设计文件**
- 1.2 **放置元器件**
- 1.3 主要使用到的元器件的种类
- 1.4 **按图连线**
- 1.5 **编译**
- 1.6 仿真
- 1.7 设置引脚,准备下载!
- 总结一下
- 二、纯VHDL
- 2.1创建vhd文件
- 2.2 导入常用库
- 2.3 编写实体
- 2.4 编写结构体
- 3、拓展题
一、QUARTUS II的简单上手及基本操作
找了好多好多,感觉网上都不太人性化,所以自己记录了一下自己写的,还是有点意思的的,但是这前面的没啥意思,到后面连起来用的时候就有意思了!
1、项目的创建
1、File -> New Project Wizard
后面没有选择, 一路无脑下来,项目就已经安装好了!
2、两种方法实现38译码器
一、纯原理图法
1.1新建一个图形设计文件
1.2 放置元器件
只要在如下区域双击,就可以开始放置元器件了!
基本上用得了的就是如下栏
1.3 主要使用到的元器件的种类
- NOT(可以直接用搜索框搜,没必要傻傻的找)
- AND
1.4 按图连线
1.5 编译
显示这个就算成功了,然后可以先看下效果,就是仿真一下,看看是不是自己想要的结果
1.6 仿真
1.6.1 新建一个VWF文件
1.6.2 设置仿真文件
1.6.3 在in 端口设置输入波形信号
可以直接框选几栏,然后再工具栏设置高低电平
也可以框选几栏,然后双击,就可以设置这里的值
小tips: 可以将这里的进制位改为十进制,因为可以看起来很方便(主要是懒得换算,输入一位就可以达到二进制四位的效果。)
设置成这样就可以了,表示1.2.3…
1.6.4 开始仿真
会弹出一个新页面,显示出仿真波形。仿真就这样结束了,说明符合我们的预期
1.7 设置引脚,准备下载!
Assignments->Pin Planner
在这里输入对应的引脚号就行,然后直接退出
Tools->Programmer,下面对着书搞就行。(开发板不在身边,下不了程序)
总结一下
创建项目
创建图形设计文件
选择元器件
画图
编译
仿真
选择引脚
下载
二、纯VHDL
相同步骤省略,只关注VHDL
2.1创建vhd文件
小tips:看个人喜好,我喜欢用Notepad来代替quartus ii的编译
2.2 导入常用库
类似与c语言的Include 和python 中的import(一般无脑导入就行)
Library IEEE;
Use IEEE.STD_LOGIC_1164.all;
2.3 编写实体
实体,就是主要就是定义要使用的端口,注意,实体名称一定要和vhdl文件名称一样,否则报错
Entity sch38yimaqi_vhdl ISPort(input1:IN std_logic_vector (2 DOWNTO 0); D:OUT std_logic_vector (7 DOWNTO 0));
End;
2.4 编写结构体
结构体的感觉更像是其他语言里面函数之类的感觉,就是去实现功能,这里一个并行就可以完成
ARCHITECTURE behave OF sch38yimaqi_vhdl ISBEGINPROCESS(input1) --进程程序,程序顺序执行BEGINCASE input1 ISWHEN "000" => D<="11111110"; -- 八位,当输入为000时,只有最后一位置0WHEN "001" => D<="11111101";WHEN "010" => D<="11111011";WHEN "011" => D<="11110111";WHEN "100" => D<="11101111";WHEN "101" => D<="11011111";WHEN "110" => D<="10111111";WHEN "111" => D<="01111111";WHEN OTHERS => D<="11111111";END CASE;END PROCESS;
END;
没有在学校的fpga的板子上试验过,如果运行不成功的话,应该只要修改一下逻辑值就够了,就是0 1 那些。
3、拓展题
1、 LED9-LED12全部灭掉,无非就是让led的那些端口全部置0(假如设置1 为亮的话),可以在定义端口的时候,直接给他们赋初值的时候就直接解决掉他们。
D4:OUT std_logic_vector (3 DOWNTO 0):="0000"); -- 初始化D9-D12 置低点位,不亮。
2、添加使能端的问题,同样也是一样的,只要添加一个if的判断语句就可以解决
ARCHITECTURE behave OF sch38yimaqi_more IS
BEGINPROCESS(input1) --进程程序,程序顺序执行BEGINIF EN='1' THEN -- 当使能为1时,进行有效译码CASE input1 ISWHEN "111" => D<="00000001"; -- 八位,当输入为000时,只有最后一位置0 实验led亮为1 按键摁下为0WHEN "110" => D<="00000010";WHEN "101" => D<="00000100";WHEN "100" => D<="00001000";WHEN "011" => D<="00010000";WHEN "010" => D<="00100000";WHEN "001" => D<="01000000";WHEN "000" => D<="10000000";WHEN OTHERS => D<="00000000";END CASE;ELSIF EN='0' THEN -- 不需要译码时,使能端置0,全部输出低电平D<="00000000";END IF;END PROCESS;
END;
3、流水灯的实现具体可以参考另外一篇,这里主要是有两种思路
第一种,就是用rol函数(就是沿着向量右移一位)
可以参考这个
PROCESS(tim) -- 含有多个进程语句,都为并行执行
BEGINIF(tim'event and tim = '1') THENsta <= sta rol 1;END IF;
END PROCESS;
第二种是,直接连接向量的头,也可以达到移位的效果
BEGINIF(tim'event and tim = '1') THENsta <= sta(6 DOWNTO 0) & sta(7);END IF;END PROCESS;
4、字太多了,不想看
完全代码如下
Library IEEE;
Use IEEE.STD_LOGIC_1164.all;
Entity sch38yimaqi_more ISPort(input1:IN std_logic_vector (2 DOWNTO 0); EN:IN std_logic;D:OUT std_logic_vector (7 DOWNTO 0);D4:OUT std_logic_vector (3 DOWNTO 0):="0000"); -- 初始化D9-D12 置低点位,不亮。
End;
ARCHITECTURE behave OF sch38yimaqi_more IS
BEGINPROCESS(input1) --进程程序,程序顺序执行BEGINIF EN='1' THEN -- 当使能为1时,进行有效译码CASE input1 ISWHEN "111" => D<="00000001"; -- 八位,当输入为000时,只有最后一位置0 实验led亮为1 按键摁下为0WHEN "110" => D<="00000010";WHEN "101" => D<="00000100";WHEN "100" => D<="00001000";WHEN "011" => D<="00010000";WHEN "010" => D<="00100000";WHEN "001" => D<="01000000";WHEN "000" => D<="10000000";WHEN OTHERS => D<="00000000";END CASE;ELSIF EN='0' THEN -- 不需要译码时,使能端置0,全部输出低电平D<="00000000";END IF;END PROCESS;
END;
实验一:38译码器的VHDL实现及原理图实现相关推荐
- 3-8 译码器设计实验--VHDL
一.实验目的 (1)学习并掌握Quartus II的使用方法 (2)学习使用原理图方法进行逻辑设计输入,并初步了解可编程器件设计的全过程 (3)熟悉ALTERA公司EDA设计工具软件Quartusll ...
- 记录使用Spartan-6 FPGA进行一次3-8译码器实验
之前仔细的记录过一次PWM蜂鸣器的实验,见博文:全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制,这里就不再仔细的写下全过程了,因为都是一样的过程,只记录一下做这个小实验的思路即可. 3-8译码器 ...
- VHDL编写3-8译码器
VHDL编写3-8译码器 3-8译码器是由3个输入端和8个输出端组成的译码器,实现3位二进制数转换成10进制的输出(用高低电平来表示输入输出)真值表如下: 本文用两种方法来实现译码器(case和wit ...
- 38译码器数码管c语言代码,38译码器驱动数码管电路图
使用38译码器来驱动数码管来节省IO端口 (1)什么是38译码器? 38译码器有3个输入端口A.B.C和8个输出端口Y0-Y7.由输入端口控制输出端口的值 (2)为什么要使用38译码器 回想之前的驱动 ...
- 用2片3-8译码器拼接成4-16译码器
用2片3-8译码器拼接成4-16译码器 一.实验内容 1.用两片74138译码器拼接成4-16译码器 2.验证仿真电路的正确性 3.注意观察输出信号的毛刺 二.实验步骤 1,新建工程 2,新建bdf文 ...
- 牛客刷题<19>使用3-8译码器实现逻辑函数
题目:使用3-8译码器①实现逻辑函数_牛客题霸_牛客网 思路:此方法可适合于任何逻辑函数,需要将L=(~A)·C+A·B 逻辑式转换为最小项的形式. 实现逻辑表达式 38译码器的输出实际上包含了输入A ...
- 学习笔记——3-8译码器实例(FPGA)
一.3-8译码器简介 1.简介 译码是编码的逆过程.其功能是将具有特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路称为译码器.如果有n个二进制选择线,则最多可译码转换成2n个数据. ...
- 51单片机交通灯(定时器+38译码器+中断)
51单片机交通灯这个实例主要用到的知识点有: >如何点亮LED >38译码器位选与段选 >定时器控制 >中断控制 #include <reg52.h>/****** ...
- (147)Verilog编程:使用3-8译码器实现全减器
(147)Verilog编程:使用3-8译码器实现全减器 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog编程:使用3-8译码器实现全减器: 5)结束语. ...
- 计算机组成原理画出CPU与主存及3-8译码器之间信号线的连接问题
[前驱知识–主存储器扩展] 主存储器表达方法:字线(地址线) × 位线(数据线) *CS片选信号线.WE读写控制信号线.A地址线.D数据线. 位扩展(数据线扩充) 例如:两片16K ...
最新文章
- anaconda tensorflow 2.3_TensorFlow 速成 | 统计师的Python日记 第13天
- python做小程序-抖音最火的整蛊表白小程序如何做出来的?教你用python做出
- 高性能网站建设的14个原则
- C#中全角与半角的转换
- nginx报错:nginx: [alert] could not open error log file: open() “/var/log/nginx/error.log“ failed (2: N
- 2016年第七届蓝桥杯C/C++ A组国赛 —— 第三题:打靶
- STM32F412应用开发笔记之一:初识NUCLEO-F412ZG
- hive 创建访问用户_hive创建角色并赋权
- 写给90后快30岁的我们
- visual studio code无法连接网络,五种方法
- @所有技术人,快来翻开属于你的2021定制日历!
- (转)一段如何調用Button.Click事件的故事
- 悲剧,当用cywin 写Linux脚本
- Dart中dynamic,var,object三者的区别
- vscode下载很慢问题处理
- [求助]python模拟布丰投针
- 古风尚婚纱摄影--决定
- 联想台式计算机重装系统教程,联想台式机怎么重装系统?联想台式机重装系统教程...
- 【干货】怎么将阿里云ECS的数据下载到本地
- 百度网盘加速无限试用_百度网盘上线 单日/单次 加速功能,最低仅需 2 块钱
热门文章
- linux缺少libeds.so,OpenSSL鏈接libcrypto.a以靜態方式
- 【数据结构试验】树的基本操作
- Excel函数大全-12统计函数
- 爬虫 推送到discord_如何将自定义表情符号添加到Discord服务器
- java代码混淆工具
- 官网CentOs7镜像下载详细步骤
- java中hashmap按键排序_HashMap按键值排序方法
- ACM32 MCU元器件AD封装库
- 2020云课堂智慧职教答案计算机,2020云课堂智慧职教答案英语,云智慧职教题库,智慧职教测试答案...
- java编程选游戏本还是轻薄本,编程用什么笔记本,超薄本还是游戏本