从小白开始学FPGA,vivado实操第一次,初步产生波形

这篇具有很好参考价值的文章主要介绍了从小白开始学FPGA,vivado实操第一次,初步产生波形。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        上次介绍了如何创建工程,这次来实现一个波形的产生,vivado用的是Verilog语言,语法很简单就不单独说了,慢慢在程序里很快就学会了,大概的介绍我粘在文章最后,想看就看不想看直接实操也行。

        在创建的主程序中找到这个模块的括号,我把括号内容理解为这个模块的端口,如下面的程序所示,有一个时钟端口,一个复位端口,和一个输出端口,逗号隔开,最后一个不用加。红线是因为没对他们进行声明,我习惯在括号外进行声明,这样之后的例化可以直接复制(例化会在后面说)

从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

下面对信号进行声明,时钟信号和复位信号肯定是需要输入的,输出信号输出,如图,这时候报错就没有了,1.input,output表示输入或输出。2.表示声明的名字,每个语句要加分号3.表示这个变量占多少个二进制数,本文这个是八位二进制数(0,1,2,3,4,5,6,7八位),也就是输出要小于等于255

从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 接下来定义信号类型,设计中所有的信号类型定义,只有 reg 和 wire 两种,现在先知道,下面会说他两个的区别。定义的时候同样考虑信号的大小,不写的话默认为一位,如果不定义信号类型默认为wire型。

从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

下面编写程序的主要模块,1.直接先照抄,表示时序逻辑。2.(posedge clk or negedge rst_n)叫做敏感列表 ,也就是说每逢时钟的上升沿和复位信号的下降沿,都要执行一遍这个程序。3.begin end 表示这之间是一个整体,里面的语句顺序执行。

中间为了方便我就直接把这个时钟和复位的值减了一下,其中可以发现,我使用了一个'<='进行赋值,这叫做非阻塞赋值,一个小技巧,这种赋值方式只用在 always@(posedge clk or negedge rst_n) 这里面,其他的用等号赋值,同时'<='所指的变量要用reg进行定义,也就是reg型,其他都是wire型。这样我们的主程序就写完了,ctrl+s保存。

从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 下面我们开始写测试文件进行仿真,直接上代码你们看注释吧,基本每句都解释了

module tb_project_2;

reg     clk     ;//定义变量,下边clk被‘<=’指着,所以用reg型
reg     rst_n   ;
wire    out     ;//输出没被指着所以是wire型

initial begin     //照着写就行,initial里面就是信号的波形
    clk <= 0    ;//初始化时钟
    forever #10 clk <=~clk;//循环,每隔10个单位时钟反向一次,一单位时间在程序第一行
end
initial begin     
    rst_n <= 0      ;
    #100 rst_n <= 1 ;//#100的意思就是经过100个单位执行下一条
end
project_2 tb(           //例化,下面会解释
    clk             ,
    rst_n           ,
    out             
    );

endmodule

现在说一下例化,把主程序这块复制下来,

从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

粘贴到测试程序中,加'空格'和'例化名',我都是随便写例化名,一般就写tb,例化可以把测试文件的三个端口和主程序的三个端口连接起来,还有一种更规范的写法。在下一个图

从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 这样就完成了整个工程的程序书写,ctrl+s保存

下面运行一下试试

 从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 点这个Run Simulation,然后点run这个就行了,生成的波形文件放大,拉到最前边,可能因为每个上升沿执行clk-rst_n,out是这样,时钟和复位信号相减(这里输出我也不太明白)

从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 文章来源地址https://www.toymoban.com/news/detail-754969.html

 下面是Verilog的一些语法从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 

从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 从小白开始学FPGA,vivado实操第一次,初步产生波形,fpga开发

 

 

到了这里,关于从小白开始学FPGA,vivado实操第一次,初步产生波形的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 研一小白记录第一次在实验室服务器上跑深度学习的代码全过程(实验室服务器上跑代码详细全过程哦)

    研一小白记录第一次在实验室服务器上跑深度学习的代码全过程(实验室服务器上跑代码详细全过程哦)

    你在服务器上跑过代码吗?哇~你跑过!是啥样的...每回见别人跑都会问并且羡慕会在大服务器上跑代码的哈哈哈在研究生刚开学前还甚至不知道什么是服务器,更是无法想象在除了自己能看得见摸得着的电脑屏幕之外跑代码的样子。直到有天开会自己坐在了一个大大的“黑箱

    2024年02月02日
    浏览(14)
  • 树莓派第一次开机

    树莓派第一次开机

    树莓派由英国的树莓派基金会发行,旨在通过发行这个廉价开源的可随意破解的微型计算机,推动中小学编程教育,发行之后很快在全世界的开源创客圈中流行。截止到2018年10月,最新版本的树莓派主板是3B+,国内某宝上卖230元左右,还有更微型的树莓派主板Zero,国内某宝卖

    2024年02月13日
    浏览(11)
  • docker第一次作业

    docker第一次作业 1.安装docker服务,配置镜像加速器  yum install -y yum-utils device-mapper-persistent-data lvm2 y um-config-manager --add-repo https: //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i \\\'s+download.docker.com+mirrors.aliyun.com/docker-ce+\\\'  /etc/yum.repos.d/docker-ce.repo yum makecache fast yum -y install docke

    2024年02月12日
    浏览(15)
  • 第一次作业

    第一次作业

    作业内容:1,atd和crond的区别                   2,指定在2023/08/26 09:00将时间写入testmail.txt文件中                   3,指定在每天凌晨4:00将该时间点之前的系统日志信息备份到个目录下(/var/log/messages ),备份后日志文件名显示格式logfileYY-MM-DD HH-MM 1、运行方式不同

    2023年04月20日
    浏览(12)
  • shell第一次作业

    shell第一次作业

    1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查次磁盘剩余空间。 2、判断web服务是否运行    1、查看进程的方式判断该程序是否运行,    2、通过查看端口的方式判断该程序是否运行,如果没有运行,则启动该服务并配置防火墙规

    2024年02月09日
    浏览(12)
  • jQuery第一次接触

    jQuery是一个轻量级js库 1.下载jquery库,网址Download jQuery | jQuery npm i jquery 2.还可以从cdn中载入jquery script src=\\\"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js\\\" 3.j代表js,query代表查询,jQuery可以进行查询的js语言,主要用来查询html元素 4.基础语法$(selector).action(),其中selector代表要进行操

    2024年02月12日
    浏览(19)
  • 第一次博客作业

    第一次博客作业

    这学期才开始接触Java,之前只学了C语言,所以一开始写题目的代码的时候对Java的众多函数和语法不是太熟悉,一开始就上手写代码有点不适应。 ​  关于类: 1、类似C中的struct,构造函数、内置方法(函数 )都比较相似 2、尽量避免代码的重复,把private和public的方法搞清晰。

    2024年02月08日
    浏览(12)
  • python 第一次作业

    python 第一次作业

    因为笔者有一些 c/c++ 语言的基础,所以应该学 python 会稍微简单一些 输入的时候所有的输入都是字符串类型,我们需要进行类型转换 参见资源里面的第三题和第四题,为了方便起见,直接把代码贴在下面

    2024年03月25日
    浏览(7)
  • 第一次PR经历

    第一次PR经历

         

    2024年02月13日
    浏览(13)
  • 新学期第一次课

    新学期第一次课

    在信息化飞速发展的今天,大数据技术的应用日益广泛,其重要性也日益凸显。对于大数据学院的同学来说,掌握行业前沿技术是至关重要的。本篇文章将详细指导同学们如何加入QQ群、云班课,并学会使用思维导图和CSDN博客。 我们有两个QQ群,分别是2021计应1班行业前沿技

    2024年02月10日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包