03-点亮LED灯

1.FPGA设计流程

1.设计规划
对项目需求了解,划分子功能模块,子功能模块的输入输出信号及通信关系
2.波形绘制
了解子模块的功能,画出框图,搞清楚如何通过输入信号得到输出信号,进而绘制波形图
3.代码编写
参照绘制的波形图
4.代码编译
检查代码中的语法错误
5.逻辑仿真
编写仿真代码,对verilog代码进行验证
6.波形对比
7.绑定管脚
8.分析综合,布局布线
9.上板验证

2.点亮LED灯

2.1项目文件的管理

Led
  doc -- 文档手册
  quartus project -- 项目文件夹
  rtl -- 存放可综合的代码
  sim(tb) -- 仿真文件
  matlab -- matlab文件夹

2.2 功能需求

  • 点亮LED灯,使用按键控制LED灯的亮灭
  • 使用一个module就可以实现

2.3 硬件资源


  • 使用KEY1点亮LED灯


2.4 波形绘制


2.5 编写代码

module led
(
  input    wire   key_in,
  output   wire   led
);

  assign led_out = key_in;
endmodule

2.6 代码编译

  • quartus新建工程,选择位置及设置名称
  • 加载verilog代码
  • 编译verilog代码

2.7 逻辑仿真

  • 通过编写仿真文件tb,给待仿真的module灌入激励,查看输出波形是否和预期一致
module tb_led();
  // 输入给被测module的变量reg
  // 从被测module输出的使用wire
  wire led_out;  
  reg key_in;

  // 初始化输入信号
  initial key_in <= 1'b0;
  
  // key_in:产生输入随机数,模拟按键的输入情况
  always #10 key_in <= ($random) % 2 ; // 求模,取余,产生非负随机数0,1

  //例化
  // 先写module的输入输出信号,括号里写连入的信号
  led led_inst (
    .key_in  (key_in),   // input key_in
    .led_out (led_out)   // output led_out
  );

endmodule
  • 将tb添加到工程,并进行编译

2.8 绑定管脚

  • 进行一次全编译

2.9 上板验证





固化程序

  • 勾选之后,重新开始下载,下载程序完成之后要重新上电,固化程序才能下载到板子上
本文转载于网络 如有侵权请联系删除

相关文章

  • 智慧工地监控系统

    智慧工地监控系统可以借助工地上已经有的传统监控摄像头,智慧工地监控系统可以对分布在工地现场的其他摄像头回传的视频流信息进行实时解析识别。包括工地施工人员的着装、行为、状态等,还有现场的工地企业财产,以及外来车辆信息、载重、车速等,还有外来人员的行为工牌穿戴,以及在工地现场的状态,都可以进行实时监控分析。随着社会的发展,人民生活水平的提供,以及技术的进步。传统安防市场已经不能跟上人们在生活、工作场景下对安全的要求对风险的把控。智慧工地监控系统可以满足当下人们对于生活场景下,工地工作场景下,对于人的安全及物的安全的双重要求。降低企业的管理成本,提供企业工地现场的管理效率,最大程度地降低企业的损失,及时处理危险情况。目前智慧工地监控系统与传统安防设备对接,是不分什么品牌型号的,都可以即插即用,方便上手。智慧工地监控系统可以实现的算法有员工安全帽佩戴检测、反光衣识别检测、作业员工安全带佩戴识别、烟火识别、车速识别等等并且支持根据项目实际场景需求进行算法定制开发。

  • Tiny85哒哒哒

    今天在盒子里面看见一个小玩意,一看是个开发板.好像是3块钱买的.一直也没有用过,看看怎么玩.看了半天主控发现是atmel家的玩意儿.在一个项目中,该项目需要在不同位置读取多个传感器数据。这些仅需几个PWM引脚,因此使用多个ArduinoUno既昂贵又不必要。因此,我决定使用ATtiny85微控制器代替ArduinoUno开发板。当您不需要太多的PWM引脚时,ATtiny85是一种廉价而强大的替代产品。由于ATtiny85只是一个微控制器,我们需要ArduinoUno对其进行编程。引脚图将ArduinoUno配置为ISP(系统内编程)要对ATtiny85进行编程,我们需要首先将ArduinoUno设置为ISP模式。将您的ArduinoUno连接到PC。打开ArduinoIDE并打开ArduinoISP示例文件(文件->示例->ArduinoISP)并上传。向ArduinoIDE添加ATtiny85支持默认情况下,ArduinoIDE不支持ATtiny85,因此我们应该在ArduinoIDE中添加ATtiny板。打开文件->首选项,并在附加板管理器中的URL中提供以下UR

  • “腾讯云生态专场”登录教育部官网 腾实学院搭建产业互联网人才专属通道

    2020堪称“史上最难毕业季”:毕业生陆续经历了“史上最短春季学期”、“线上答辩”、“云毕业典礼”……另据教育部最新公布的数据,今年全国普通高校毕业生高达874万人,就业压力巨大。作为国内聚焦产业互联网人才培养的专业机构,腾讯教育旗下的腾实学院注意到这一问题后,与腾讯云生态伙伴联手,于6月2日正式上线了人才招聘平台。平台涵盖了上万个互联网工作岗位及海量人才资源,采取求职者与企业双向互动的模式,全方位满足广大毕业生和企业的需求。日前,腾实学院“人才招聘平台”升级:正式加入教育部“24365校园招聘服务”活动,为全国应届毕业生提供每天24小时、全年365天的网上校园招聘服务。据悉,“24365校园招聘服务”是教育部依托大学生就业网(https://www.ncss.cn/)为2020届高校毕业生打造的全国性网络联合招聘活动。6月18日,在教育部高校学生司指导下,全国高等学校学生信息咨询与就业指导中心主办,以包括腾讯云、腾讯教育腾实学院、企业微信、腾讯会议、腾讯双百计划&TOPIC基金等腾讯生态资源联合承办;宝洁、京东、美团、格力、雀巢、比亚迪等百强名企提供岗位;脉脉、猎聘、58同城

  • Lambda 表达式

    Lambda表达式1.为何需要Lambda表达式在Java中,我们无法发将函数作为参数传递给一个方法,也无法声明返回一个函数的方法在JavaScript中,函数参数是一个函数,返回值是另一个函数的情况是非常常见的;JavaScript是一门非常经典的函数式语言2.Lambda表达式作用Lambda表达式为Java添加了缺失的函数式编程特性,使我们能将函数当作一等公民看待在将函数作为一等公民的语言中,Lambda表达式的类型是函数。但在Java中,Lambda表达式是对象,他们必须依附于一类特别的对象类型--函数式接口3.JavaLambda概要JavaLambda表达式是一种匿名函数;它是没有声明的方法,即没有访问修饰符、返回值声明和名字。4.Lambda表达式作用传递行为,而不仅仅是值。提升抽象层次API重用性更好更加灵活5.JavaLamdba基本语法Java中的Lambda表达式基本语法(左边是参数,右边是匿名函数的具体实现)(argument)->{body}比如说(arg1,arg2...)->{body}(type1arg1,type2arg2...)->

  • 未来编程的9大猜想

    科学家称时间是匀速前行的,智者称万物以光速而变化——然而科技的瞬息万变仍旧无从求解,一眨眼,又是另一番景象了。很多人巴不得能够看透未来,但未来五年顶多是猜测而已。预测科技发展简直是天方夜谭,因为创新的影响力足以淘汰当下的很多技能和工具。话虽这么说,我们还是瞅瞅这命运的茶叶渣子,或许能帮我们拨开迷雾,瞥一眼未来,看看科技到那时究竟是什么样的。站在科技成就的前沿,我们斗胆展望未来。并非所有展望都会实现,甚至连惊喜都谈不上——其实很多趋势在数年前就“小荷才露尖尖角”了。希望能够为开发者们提供有价值的参考,帮助提升针对未来变化的反应能力,快速做出规划。1.REST一开始就统领了IoTREST协议统领了整个网络。随着恒温器、门锁、厨房用具等争先融入日趋成熟的IoT(物联网),这样的趋势还将继续。物联网就是物联网,可不是别的什么的SCSI、USB或SATA联网。原因很简单,REST协议的简洁深受程序员青睐,其基础架构使得REST协议简单好用,找代码漏洞也变得更容易了。还没有任何协议能像这样用文字形式储存数据,一目了然。当崭新的监控摄像机、微波炉或旋转式鼻毛修剪器随着端口80上的Nginx一同启动,

  • 札记:Java异常处理

    异常概述程序在运行中总会面临一些“意外”情况,良好的代码需要对它们进行预防和处理。大致来说,这些意外情况分三类:交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作顺序,输入文件错误等。软件和硬件环境问题 文件不存在,文件格式错误,网络问题,存储空间不足,需要的预安装库不存在,系统版本不匹配等。代码错误 使用的其它代码可能的执行错误,如调用了有关数学计算的方法中执行了除0操作等。发现异常和处理异常都是困难的,需要非常严谨的代码。实际上,程序总是分层或分模块的,往往发生异常的地方和最终调用的地方“相距”甚远。而且,异常的处理有时需要通知用户,甚至需要用户来决定接下来的动作。又或者,程序运行在“后台”,对错误的只能是记录措施。异常发生后,有的情况是需要从错误的状态中恢复再继续执行,又或者是保存状态然后终止执行等。有关异常的发现和预防是一个具体问题具体对待的经验之谈。对于异常处理框架,关键包括异常的表示、传递和捕获。接下来我们结合Java提供的异常处理机制来学习下如何在正常的程序逻辑中加入异常处理的代码。Java中的异常处理机制异常信息是为了通知更上层的方法调用者有关意外的情况,

  • matlab 时频分析(短时傅里叶变换、STFT)「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。短时傅里叶变换,short-timefouriertransformation,有时也叫加窗傅里叶变换,时间窗口使得信号只在某一小区间内有效,这就避免了传统的傅里叶变换在时频局部表达能力上的不足,使得傅里叶变换有了局部定位的能力。1.spectrogram:matlab下的stftHowcanIcomputeashort-timeFouriertransform(STFT)inMATLAB?stft不同于ft之处在于,多了时间的概念,对信号 y=sin(128⋅π⋅t)+sin(256⋅π⋅t) ( 2πft⇒f 是频率)进行短时傅里叶变换,该模拟信号中有64和128两种。fs=1000; t=0:1/fs:2; y=sin(128*pi*t)+sin(256*pi*t); figure; win_sz=128; han_win=hanning(win_sz);%选择海明窗 nfft=win_sz; nooverlap=win_sz-1; [S,F,T]=spectrogram(y,window,nooverlap,nfft,fs);

  • 腾讯云云呼叫中心电话录音数据推送

    录音数据以会话中参与对象为维度,有几个对象就对应几条录音。正常会话会有主叫方、被叫方两条录音数据,其SessionId相同,通过EndpointUser区分不同侧。若会话发生转接,还会产生SessionId相同,EndpointUser为转接方坐席的第三条录音数据。通过SessionId、EndPointUser和RecordId能够索引到各端的录音URL。 URL:https://{custom_url}?action=record&version=1METHOD:POSTContent-Type:application/json;charset=utf8REQUEST: 参数 类型 说明 SdkAppId 数值(长整型) 呼叫中心实例ID RecordId 字符串 录音ID SessionId 字符串 会话ID Timestamp 数值(长整型) 录音生成时间戳 EndpointUser 字符串 被录音的对象(用户侧为手机号,坐席为邮箱) RecordURL 字符串 录音URL地址 CustomRecordURL 字符串 录音转存COSU

  • 【酸菜鱼片】

    材料:草鱼1000克、黄豆芽200克 配料:酸菜200克、泡椒10个左右、细香葱花10克、姜片3片、蒜瓣5瓣、桂皮1个、八角1个、干辣椒6个、花椒10粒左右、盐1.5茶匙、鸡精1茶匙、高汤适量腌鱼料:料酒2汤匙、淀粉1汤匙、鸡蛋白1个、盐1茶匙酸菜鱼片的做法1.食材准备:我买了条草鱼,让卖鱼的大爷帮我片好的,家里人爱吃绿豆芽,但多数是用黄豆芽2.鱼骨挑出备用,鱼片用腌鱼料腌制15分钟左右3.地区特产网购商城黄豆芽菜洗净,入锅炒至5成熟,盛入容器内垫底备用4.配料准备,酸菜切小断,热锅入植物油,放入葱、姜、蒜、八角、桂皮、花椒、干辣椒爆香5.下酸菜和泡椒,小火煸炒出香味,加入高汤烧开6.将鱼骨鱼尾放入炖10分钟左右,再将鱼片放入烫熟7.加鸡精和盐调味,将里面的鱼肉和配料捞出放入容器8.将汤底过滤一下放入,再淋上热油,柿子椒、红椒点缀一下即可上桌

  • 【LeetCode &amp; 剑指offer刷题】发散思维题6:231. Power of Two(系列)

    【LeetCode&剑指offer刷题笔记】目录(持续更新中...) 231. PowerofTwo Givenaninteger,writeafunctiontodetermineifitisapoweroftwo. Example1: Input:1 Output:true Example2: Input:16 Output:true Example3: Input:218 Output:false   //判断一个整数是否为2的幂(说明必为正数) classSolution { public:    boolisPowerOfTwo(intn)    {        if(n<=0)returnfalse;//特殊情况判断      // cout<<((n-1)&n)<<endl;  

  • 数理逻辑03 一阶逻辑

    写在前面 命题逻辑(或者零阶逻辑)到一阶逻辑的变化,在于描述的粒度。命题逻辑只能描述命题之间的关系,以及它们如何构成更大的结构(新的命题)。在一阶逻辑中我们可以深入原子命题的内部,讨论命题的构成。 为了做到这一点,需要引入集合上的n元关系。从集合论作为基础的角度看,这么做是比较和谐的。 命题逻辑 命题逻辑的不同之处在于,我们既可以描述一个系统内的某些运算(通过函数、变量和常元),又可以描述由这些运算的结果得到的命题(通过谓词和逻辑连接符)。 一个例子就是标准算术模型\(\scrA\): 我们希望能够描述一个系统\(\scrA\),即描述清楚 系统内部存在一些元素(自然数) 这些元素互相可以通过运算(加法、后继)得到新的自然数 可以判断两个元素的大小关系(\(<\)是二元谓词)、相等关系(\(=\)是二元谓词) 可以把若干判断组合成一个更大的判断(通过命题构造子组合命题) 注意到上述4条是有层级的,12位于系统内部,3可以根据需要构造,4在不同的系统中可以完全相同。 n元关系 定义集合\(D\)上的n元关系为n元函数\(f\colonD^n\mapsto\left\{T,F\r

  • 面试题整理-MYSQL索引

    一、什么是索引     -官方定义:一种帮助mysql提高查询效率的数据结构  -索引的优点:    大大加快数据查询速度  -索引的缺点:     1)维护索引需要耗费数据库资源     2)索引需要占用磁盘空间     3——当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响 二、索引分类     -a.主键索引     设定为主键后数据库会自动建立索引,innodb为聚簇索引   -b.单值索引     即一个索引只包含单个列,一个表可以有多个单列索引   -c.唯一索引     索引列的值必须唯一,但允许有空值   -d.复合索引     即一个索引包含多个列   -e.FullText全文索引(My5.7版本之前只能由于MYISAM引擎)     全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文索引可以在CHAR、VARCHAR、TEXT类型列上创建。MYSQL只有MYISAM存储引擎支持全文索引 三、索引的基本操作 1.主键索引自动创建 --建表主键自动创建主键索引 createtable

  • 最大表示法

    intwork(intlen,intpat[])//最大表示法 { //intlen=strlen(pat); inti=0,j=1,k=0; while(i<len&&j<len&&k<len) { intt=pat[(i+k)%len]-pat[(j+k)%len]; if(!t)k++; else { if(t>0)j=j+k+1; elsei=i+k+1; if(i==j)j++; k=0; } } returni<j?i:j; }复制  

  • filter() ,call() , concat()

    filter()   是对列表序列的每个元素作为参数传递给函数进行判断,然后返回ture或false,最终ture的值返回给新列表.     这是一个独属于数组的方法。 call()    用重定义this这个对象的指向 concat()    用于连接两个或多个字符串。  

  • linux信号量的实现

    待续

  • 解决IIS7中出现An error occurred on the server when processing the URL错误提示的方法

     相信用过IIS7的朋友在调试程序的时候都遇到过下面这样的错误提示:    AnerroroccurredontheserverwhenprocessingtheURL.Pleasecontactthesystemadministrator.Ifyouarethesystemadministratorpleaseclickheretofindoutmoreaboutthiserror.   其实这是IIS7对ASP程序发送的一个脚本错误消息,只要是程序中有错误就会出现这样的错误提示,所以关键的一步是要将具体的错误显示出来,方法如下:   1、打开控制面板→管理工具→Internet信息服务(IIS)管理器→双击“ASP”图标                              2、在左边的窗口中找到你的网站,然后在右边的窗口中展开“

  • kubernetes集群node加入不了master错误处理

    #如果node加入不了master或者加入成功但是,在master中显示不出来。排查错误:1.运行,kubelet,查看日志,一般是kubelet的运行和docker启动方式不匹配。调整:vim /etc/docker/daemon.json修改:native.cgroupdriver=cgroupfs#重启dockersystemctldaemon-reloadsystemctlrestartdocker2.如果还是加入不了,修改hostname.vim/etc/hostname改为:node1重启3.如果还是加入不了.执行以下命令:swapoff-a   #willturnofftheswapkubeadmresetsystemctldaemon-reloadsystemctlrestartkubeletiptables-F&&iptables-tnat-F&&iptables-tmangle-F&&iptables-X4.如果还是加入不了,重新生成token 在master机器中执行,kube

  • ubuntu 12.04 clang 3.4 安装

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4137402.html 1.添加clang源 debhttp://llvm.org/apt/precise/llvm-toolchain-precisemain deb-srchttp://llvm.org/apt/precise/llvm-toolchain-precisemain #3.4 debhttp://llvm.org/apt/precise/llvm-toolchain-precise-3.4main deb-srchttp://llvm.org/apt/precise/llvm-toolchain-precise-3.4main #3.5 debhttp://llvm.org/apt/precise/llvm-toolchain-precise-3.5main deb-srchttp://llvm.org/apt/precise/llvm-toolchain-precise-3.5main #Common debhttp://ppa.launc

  • python 升级pip,升级package

    python-mpipinstall--upgradepip-ihttps://pypi.doubanio.com/simple/--trusted-hostpypi.doubanio.com 解析: 1、以管理员身份升级pip:python-mpipinstall--upgradepip 2、用豆瓣源,速度快:-ihttps://pypi.doubanio.com/simple/ 3、将豆瓣源添加为信任主机host:--trusted-hostpypi.doubanio.com piplist#列出所有已安装的三方库 piplist--outdated#列出当前已安装的第三方库中所有过期的库 参考: https://www.cnblogs.com/gengyufei/p/12611285.html https://blog.csdn.net/Jayden_Gu/article/details/81741467

  • Java中MyEclipse快捷键整理

     ************************************  MyEclipse快捷键1(CTRL)  ************************************ Ctrl+1快速修复 Ctrl+D:删除当前行 Ctrl+Q定位到最后编辑的地方 Ctrl+L定位在某行 Ctrl+O快速显示OutLine Ctrl+T快速显示当前类的继承结构 Ctrl+W关闭当前Editer Ctrl+K快速定位到下一个 Ctrl+E快速显示当前Editer的下拉列表 Ctrl+J正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutesline中显示没有找到了,) Ctrl+Z返回到修改前的状态 Ctrl+Y与上面的操作相反 Ctrl+/注释当前行,再按则取消注释 Ctrl+D删除当前行。 Ctrl+Q跳到最后一次的编辑处 Ctrl+M切换窗口的大小 Ctrl+I格式化激活的元素FormatActiveElements。 Ctrl+F6切换到下一个Editor Ctrl+F7切换到下一

  • 测试效果小程序

    varnumAi=0 vartimer Page({ data:{ //控制按钮是否可点击 btnState:false, //记录获胜次数 winNum:0, //中间的话“Ho~YouWin” gameOfPlay:'', //用户选择的图片 imageUserScr:'/pages/image/wenhao.png', //电脑随机的图片 imageAiScr:'', //石头剪刀布图片数组 srcs:[ '/pages/image/shitou.png', '/pages/image/jiandao.png', '/pages/image/bu.png' ] }, //生命周期,刚进来 onLoad:function(){ //获取本地缓存“已经获胜的次数” varoldWinNum=wx.getStorageSync('winNum'); //如果有缓存,那么赋值,否则为0 if(oldWinNum!=null&&oldWinNum!=''){ this.data.winNum=oldWinNum; } this.timerGo(); }, //点击按钮

相关推荐

推荐阅读