点亮一个LED灯

设计定义:

二选一多路器

两个输入IO,a、b。可以是高电平,

输入按键按下时,LED灯与a端口状态保持一致,

按键释放时,LED灯与b端口状态保持一致

设计输入:创建一个project

编写功能代码

module LED(a,b,key_in,led_out);
input a;//输入端口a,b;
input b;

input key_in;//按键输入,实现输入通道的选择

output led_out;//led控制端口

assign led_out=(key_in==0)?a:b;//当key_in==0,led_out=a;

endmodule

编写testbench 

`timescale 1ns/1ps

module LED_tb;

reg signal_a;
reg signal_b;
reg signal_c;
//激励信号定义,对应连接到待测试模块的输入输出
wire led;
//待检测信号定义,对应连接到待测试模块的输出端口
LED u0(
.a(signal_a),
.b(signal_b),
.key_in(signal_c),
.led_out(led));
//例化待测试模块

initial
begin
signal_a=0;signal_b=0;signal_c=0;
#100//延时100ms
signal_a=0;signal_b=0;signal_c=1;
#100
signal_a=0;signal_b=1;signal_c=0;
#100
signal_a=0;signal_b=1;signal_c=1;
#100
signal_a=1;signal_b=0;signal_c=0;
#100
signal_a=1;signal_b=0;signal_c=1;
#100
signal_a=1;signal_b=1;signal_c=0;
#100
signal_a=1;signal_b=1;signal_c=1;
$stop;
//产生激励
end
endmodule

设置脚本

前仿

前仿结果

后仿结果

会发现在后仿的波形中会产生脉冲波形

还存在逻辑的延迟

这些问题在后面的学习中,现在重点学习流程。

假设这些问题都是可以接受的,现在回到quartus II中对IO进行分配,将设计对应到具体的电路板。

这里查阅DE1-SOC开发板的相关技术文档,可以查到键盘和LED灯的接口,我下篇随笔会专门讲解下DE1-SOC的软硬件核,现在先贴着,之后再贴链接

从图中可以看出可以选择LED为V16等四个灯,KEY为AA14等案件,a,b信号输入选择AC12,AD12等SW拨码开关

下面选择引脚分配

设置好后的引脚分配图,设置好后点击关闭即可。

全编译后,点点击programer键即可打开下载界面。点击Hardware Setup

选择DE-soc后close(第一次用开发板的可能没有这个选项,这个在最后的附录中将进行补充)

然后点击autodetect,选择FPGA设置,FPGA和HPS装置会出现在JTAG chain里面

选定器件后右键,选择Change file

选定软件程序生成的output file 下的.sof文件,最后点击start即可成功烧写到开发板中。

实物测试方法

把SW1拨到靠灯一端,SW5在另一端,按下KEY0后LED灯会亮,不按下会熄灭,效果如下图所示。

到这里,整个项目的基本开发流程就基本能够理解了。

附录:

第一次插上DE1-soc系统因为没有驱动,会检测不到开发板,打开系统的设备管理器会发现有个无法检测的设备。

双击它后选择驱动导入-----》然后自己从quartus-----》安装路径\quartus\drivers\\usb-blaster-ii中导入即可添加设备驱动。

时间: 2025-01-02 15:38:43

点亮一个LED灯的相关文章

ESP8266-12F学习之点亮一个LED灯

点亮一个LED灯     上一篇文章,我们介绍了怎么在Windows系统下搭建一个SEP8266的开发环境,那在这一篇文章中我们要开始来编写一个硬件入门经典小程序,如何点亮一个LED小灯,同时在这一章中我们还会介绍怎么样将编译好的程序下载到ESP8266-12f中.  第一步:下载官方demo框架,从http://wiki.ai-thinker.com/esp8266/examples 下载,当然,也可以在文章最后下载我的附件,下载完后,我们将文件添加到SDK中进行编译,步骤如图: 点开C/C+

在 S5PV210 的 开发板上 点亮 一个 LED 灯

参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用  xshell 工具 连接 开发板  ,winscp 工具 连接 开发板  ,  准备 一个 Ubuntu  32位 ,装上 交叉编译链.. 使用下面 代码 和 Makefile 文件 进行编译  ,生成的  执行 文件  利用 winscp 软件复制到 Linux开发板上 ,利用 xshell 运行 这个可执行文件. 下面    代码的  功能  是   新建 一个 TCP 客户

树莓派点亮一个led灯

1. 访问网站:http://www.airspayce.com/mikem/bcm2835/, 该网站提供了一份针对树莓派的库文件,下载地址为:点击下载 点击下载.按照提示安装即可. 2. 在bcm2835-1.4.2 中的example文件夹中即为历程文件,打开其中的bink文件夹,使用gcc -o blink blink -l bcm2835 即可生成blink执行文件. 3. 在blink.c文件中,提示控制pin17引脚,即图中的绿色GPIO0,连接LED灯的正极:LED灯负极接树莓派

2016.12.12 点亮第一个LED灯

一.keil编译程标准流程 注意事项: 1.建立的 工程 和 .c文件 文件名一样. 二.LED模块图 三.点亮第一个LED灯代码:    

从点亮一个LED开始,Cortex-A9裸机程序设计

电路原理图: 如何点亮一个LED? 通过对原理图进行分析,我们能够发现给三极管的基极加上一个高点平时,三级管be结导通构成通路,此时二极管就点亮了.若要将LED熄灭只需取消高电平输出. 如何使三级管基极获得一个高电平? 控制三极管基极的其实是exynos4412的一个引脚(忽略具体是怎么连接的),因此我们要做的就是: 配置相关寄存器使引脚变为输出功能(这里配置为输出功能 0x1) 配置上下拉(若需要) 操作寄存器改变引脚电平变化 配置带负载能力(若需要) 相关寄存器 配置引脚功能 获取或设置引脚

STM32学习笔记(一)——点亮一个LED

引言 最近报名了2017全国大学生电子设计竞赛,我们学校是第一次参加这个比赛,由于8/9月份就要比赛了,所以现在准备是比较晚的了,指导老师说只能做控制类的题目了,让我们学习一下STM32单片机,51到时候肯定不够用了,正好前几天买了一块STM32F103ZET6的最小系统,那就赶紧学习吧!从哪里学习呢?同样是从点亮一个小灯开始,就建个工程模板就让我没有耐心了,折腾了一上午终于把工程建立好了, 关于STM32 简介 STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Co

[MSP430DriverLib-1]使用库开发并点亮第一个LED灯

???? MSP430DriverLib库下载地址:http://www.ti.com/tool/MSPDRIVERLIB ???? 下载后进入driverlib文件夹,选择对应的型号,这里我选择的是MSP430F5xx_6xx,进入后将里面的文件都复制到你的msp430工程目录下即可.这里我将要复制的文件都放在DriverLib文件夹里. ???? 这里我用的是TI的MSP430F5529 LaunchPad Evaluation Kit的板子.首先我们来点亮第一个LED,以下为源代码: #i

6种中断点亮一个LED

一.外部中断0.1(分别點亮一個LED) /******************************************************************************* * 标题: 计数器中断实验 * #include <reg52.h> #include<intrins.h> sbit led1 = P0^0; sbit led2 = P0^1; void main(void) { // IT0=0; //低电平触发 IT0=1; //下降沿触发

STC51六中中断配置点亮一个LED

一.外部中断0.1(分别點亮一個LED) /******************************************************************************* * 标题: 计数器中断实验 * #include <reg52.h> #include<intrins.h> sbit led1 = P0^0; sbit led2 = P0^1; void main(void) { // IT0=0; //低电平触发 IT0=1; //下降沿触发