当前位置: 首页 > news >正文

Diamond基础2:开发流程之LedDemo

在这里插入图片描述

文章目录

  • 1.关联VS Code
  • 2.Diamond工程目录
  • 3.Led Demo开发流程
  • 4.烧写bit文件
  • 5.传送门

1.关联VS Code

和Vivado一样,Diamond也可以使用第三方的编辑器,VS Code编辑器因为可以安装各种插件,并且对verilog开发的支持也算完善,所以很受欢迎。关于VS Code具体插件和汉化包参考Vivado关联VS Code文本编辑器。具体操作如下,选择tools–>Options–>File Associations,然后选择v文件,点击打开将VS Code安装路径选上即可。
在这里插入图片描述

2.Diamond工程目录

如图所示,Diamond不会像Vivado一样有相对整洁的目录,所以通常会在工程目录下根据自己的习惯建立子文件夹以便于工程管理。我的习惯是src文件放源文件即.v文件,ip目录放工程中用到的IP核生成的文件,ila放Diamond的在线监测工具reveal的相关文件。
在这里插入图片描述

3.Led Demo开发流程

写一个两个led交替闪烁的程序熟悉Diamond的开发流程。具体操作如下:
①在Start Page界面选择New,然后输入工程名字和保存路径,点击Next。
在这里插入图片描述
②选择相应的FPGA型号,点击Next
在这里插入图片描述
③任选一个综合工具,点击Next
在这里插入图片描述
④随后邮件Input File,选择Add–>New File选择Verilog Files 输入名字和保存位置即可。
在这里插入图片描述
⑤双击源文件,打开vs code编辑器,输入以下代码,可以看到工程实现是led1和led2交替闪烁。

module LED_demo
(
input clk_i, //输入系统时钟
input rst_n, //输入复位信号
output led1, //输出led1
output led2  //输出led2,与led1取反
);
parameter CLK_DIV_PERIOD=125_000_000; 
reg clk_div=0;
assign led1=clk_div; 
assign led2=~clk_div; 
reg[23:0] led_cnt=0; //分频用的计数器
always@(posedge clk_i or negedge rst_n)beginif(!rst_n)beginled_cnt<=0;end else  if(led_cnt==(CLK_DIV_PERIOD-1)) beginled_cnt<=0;end else beginled_cnt<=led_cnt+1'b1;end 
endalways@(posedge clk_i or negedge rst_n)beginif(!rst_n)beginclk_div<=0;end else if(led_cnt<(CLK_DIV_PERIOD>>1)) begin     clk_div<=0;end else beginclk_div<=1;end
end
endmodule

⑥随后点击Sythesis Design,知道出现绿色对勾显示综合通过
在这里插入图片描述
⑦点击Tools–>Spreadsheet View为工程添加引脚约束信息。
在这里插入图片描述
⑧在Process界面点击Bitstream File即可生成bit文件

4.烧写bit文件

连接Jtag,给板子上电
①选择下图中黄色箭头向下的图标,打开Programmer:Getting Started界面,选择Create a new project from a JTAG scan,如图中显示的Port:FTUSB-1,这是我故意连了两个JTAG,这里要对应好自己板子的port号,可单击Detect Cable之后选择对应Port。点击OK进入下一步。
在这里插入图片描述
②点击Device处选择对应FPGA型号,单击Fast Program,出现图中界面选择烧写的bit文件,然后单击绿色图标下载程序。
在这里插入图片描述

5.传送门

  • 我的主页
  • Lattice进阶之路汇总导航
  • 上一篇:认识Lattice器件
END

📡文章原创,首发于CSDN论坛。
📡欢迎点赞♥♥收藏⭐⭐打赏💵💵!
📡欢迎评论区或私信指出错误💉,提出宝贵意见或疑问😱。

http://www.xdnf.cn/news/1317043.html

相关文章:

  • c_str()函数的详细解析
  • 简单的 VSCode 设置
  • (nice!!!)(LeetCode 每日一题) 837. 新 21 点 (动态规划、数学)
  • bash shell 入门
  • 云智智慧停充一体云-allnew全新体验-路内停车源码+路外停车源码+充电桩源码解决方案
  • Rust:DLL 输出对象的生命周期管理
  • API生命周期10阶段
  • 原子操作及基于原子操作的shared_ptr实现
  • Baumer高防护相机如何通过YoloV8深度学习模型实现工作设备状态的检测识别(C#代码UI界面版)
  • 【C++】Windows 下 TCP接口超详介绍,如何实现一个TCP服务端和客户端
  • Windows 10共享打印机操作指南
  • 业务员手机报价软件免费领取——仙盟创梦IDE
  • 精美UI的单页网盘资源分享搜索页面 短剧搜索 自适应页面
  • 飞算JavaAI赋能高吞吐服务器模拟:从0到百万级QPS的“流量洪峰”征服之旅
  • IC验证 AHB-RAM 项目(一)——项目理解
  • AOP配置类自动注入
  • Git安装使用
  • Java增强for循环(小白友好版)
  • 整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层联合 之1
  • 【R语言】R语言矩阵运算:矩阵乘除法与逐元素乘除法计算对比
  • 7 索引的监控
  • 一文读懂[特殊字符] LlamaFactory 中 Loss 曲线图
  • JavaScript字符串详解
  • 图解希尔排序C语言实现
  • 力扣 hot100 Day76
  • Java 基础 -- Java 基础知识
  • C语言---第一个C语言程序
  • FreeRTOS源码分析八:timer管理(一)
  • 基于遗传编程的自动程序生成
  • Java语法进阶之常用类