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

动态网站建设与管理长沙seo排名外包

动态网站建设与管理,长沙seo排名外包,关于网站建设案例,网站一般做哪些测试最近收到了一个 Tang nano 9K FPGA开发板,就想借此机会研究一下。 官方文档里介绍如果想使用高云的 FPGA,就需要使用 GOWIN IDE,但是需要申请 license 提交一堆资料,我是别人送的就不太方便让别人弄。加上 IDE 其实并不是很适合学…

最近收到了一个 Tang nano 9K FPGA开发板,就想借此机会研究一下。

官方文档里介绍如果想使用高云的 FPGA,就需要使用 GOWIN IDE,但是需要申请 license 提交一堆资料,我是别人送的就不太方便让别人弄。加上 IDE 其实并不是很适合学习和投入生产,因为 IDE 忽略了很多细节,以及对一些工作做了处理。所以就想找到其他的工作流程,就像可以使用任何文本编辑器加上 Clang/LLVM 就可以编译 C/C++ 程序一样。

Tang nano 9K FPGA

FPGA开发是在开发什么?

首先是需要知道,FPGA 开发到底是在开发什么,这样才能找到需要的工具和软件。

计算机械执行各种指令的本质是给一系列逻辑单元的引脚通电,然后经过逻辑电路之后输出新的电路信号。从软件的层面来说,每个引脚的输入就是一个常见到的一串二进制数字(比如01011101010)中的一位(一般使用的正逻辑中,1表示高电平,0表示低电平),早期的打孔板就是实体版的这种二进制数字。也就是说,最终我们需要的是一个存放二进制指令的文件,然后由 FPGA 执行。

这时候还有一个问题:指令怎么知道接口和针脚谁是谁呢?不知道的话,是没有办法弄到正确的二进制指令的,因为一些指令的操作对象就可能是错误的。
接口和针脚本质是一些数字表示的,需要通过这些数字来标识,所以我们还需要标识对应接口和针脚的文件。

简而言之,开发 FPGA 就是编写两个文件:xxxx.vxxxx.cst

  • .v文件里存放的是 Verilog 语言的代码,用来连接电路中的各种门、寄存器,以及一些硬 IP(hard intellectual property)。
  • .cst文件里存放的是引脚约束文件,用来表示 FPGA 开发板上每个引脚的作用和电压。

然后再通过一些工具,最后将其转换成存放了一堆位(bit)的文件,称之为比特流文件,来控制各部分的连接、工作等。不同 FPGA 厂商使用的文件格式不一样。这里 Tang nano 9K 使用的文件后缀为.fs,内容如下:

请添加图片描述

安装和配置需要的工具

前提

你需要有Python 3.8 或更新的版本,因为生成比特流需要使用一个 Python 脚本。Mac 一般回预装 Python,你只需要检查和更新版本即可。

工具链 OSS CAD Suite

接下来使用需要 OSS CAD Suite,这是一个工具链,可以将xxxx.vxxxx.cst转换成最终的比特流文件(有点像编译器或者说交叉编译里的工具链),最后将其写入 FPGA。

这个套件包含了很多 FPGA 的工具,一般目录名或程序名带gowin的便是这里 Tang Nano 系列所需的。但其实可以只安装 Gowin FPGA 芯片所需的工具的,不过 OSS CAD Suite 不光终端可以使用,VS Code 也可以使用,所以使用 OSS CAD Suite 比较方便两头使用,如果你使用其他 FPGA 的话,也可以减少安装新的工具链。

OSS CAD Suite 下载地址为:https://github.com/YosysHQ/oss-cad-suite-build/releases/latest

如果你使用最新的 OSS CAD Suite 构建时出现下列这种错误,那么建议下载 2023 年 2 月或 3 月的版本(版本更新特别快,基本上几天就一版,随便哪天的都行)

gowin_pack -d GW1N-9C -o rio.fs rio_pnr.json
Traceback (most recent call last):
File "/opt/oss-cad-suite/libexec/gowin_pack", line 33, in 
sys.exit(load_entry_point('Apycula==0.8.2a1', 'console_scripts', 'gowin_pack')())
File "/opt/oss-cad-suite/lib/python3.8/site-packages/Apycula-0.8.2a1-py3.8.egg/apycula/gowin_pack.py", line 984, in main
AttributeError: module 'importlib.resources' has no attribute 'files'
make: *** [Makefile:16: rio.fs] Error 1

然后将 OSS-CAD-Suite 中bin的路径放到环境变量PATH中,你可以放到你的 Shell 配置文件中。语句如下:

export PATH="存放位置/oss-cad-suite/bin:$PATH"

然后使用source激活更新或者新开一个终端窗口即可。

只安装 Gowin FPGA 需要的工具链

Tang Nano 使用的 Gowin FPGA 芯片,它的比特流和格式的工具在 Apicula 项目中,这是地址:https://github.com/YosysHQ/apicula。如果你需要阅读文档,那么也在这个项目中。

安装方法如下:

$ pip3 install apycula

如果你想简洁安装,那么可以使用这种方法。这样下载安装的包体积会小特别多(4.1 MB 对 1.35 GB),但是万一开发过程中需要使用其他的工具,那么就得自己再去单独下载这些工具了。

文本编辑器 VS Code

编写代码这里使用 Visual Studio Code,当然你使用任何文本编辑器来编写代码,比如 Vim、Emacs 等。但是不能使用 Word、Pages 这种应用程序,因为这种应用程序实际上并不是文本编辑器,而是文本处理器,在底层并不是简单的文本。

这里使用 Visual Studio Code 的原因主要是扩展会高亮代码和方便设置针脚,以及构建最终的比特流文件必须要使用一个插件来自动构建。所以需要安装两个扩展:Lushay CodeVerilog-HDL/SystemVerilog/Bluespec SystemVeriloLushay Code是为了使用 OSS-CAD-Suite,这是一个自动构建工具,而后者是为了高亮代码和方便设置针脚。如果Lushay Code不支持你的 FPGA,那么还请找一下支持自己 FPGA 的扩展插件。

此外要配置一下扩展,在“设置-扩展”中,将你的 OSS-CAD-Suite 位置输入到下图位置,这样 VS Code 才可以使用 OSS-CAD-Suite:

请添加图片描述

示例代码:让板载 LED 逐个亮起

这里有两个文件:top.vtangnano9k.cst,内容分别如下(需要注意top.v最后需要有一个空行)

// top.v
module top
(input clk,output [5:0] led
);localparam WAIT_TIME = 13500000;
reg [23:0] clockCounter = 0;
reg [5:0] cur_state = 6'b111111;	// 这个六位二进制数的每一位都表示一个 LEDalways @(posedge clk) beginclockCounter <= clockCounter + 1;if (clockCounter == WAIT_TIME) beginclockCounter <= 0;cur_state <= cur_state << 1;if (cur_state == 6'b000000) begincur_state <= 6'b111111;endend
endassign led[5:0] = cur_state[5:0];endmodule
// tangnano9k.cst
IO_LOC  "clk" 52;
IO_PORT "clk" PULL_MODE=UP;IO_LOC  "led[0]" 10;IO_LOC  "led[1]" 11;IO_LOC  "led[2]" 13;IO_LOC  "led[3]" 14;IO_LOC  "led[4]" 15;IO_LOC  "led[5]" 16;

如果你的tangnano9k.cst是用 VS Code 设置的,那么应该如下:

请添加图片描述

构建项目

使用 VS Code 构建

这种方法很简单,如果你之前配置好了 VS Code,并且也已经将你的 FPGA 连接到 Mac 上,直接按照下图的顺序点击,等一会儿,fs文件就已经构建好并且将其烧录到 FPGA 上了:

请添加图片描述

使用终端构建

这部分划成两节,第一节详细介绍了每一步的使用和原由,第二节则将其整理成一个脚本,这样就方便许多了。

逐步来说

首先进入yosys(输入按回车),页面如下:
请添加图片描述

然后输入以下命令:

# 读取分析top.v的内容
> read -sv top.v
# 将top.v的内容合成转换为json格式(由于yosys已经分析了文件,所以不用文件名top.v,而是模块名top)
> synth_gowin -top top -json test.json
# 退出yosys
> exit

当然上面这部分可以化简成一句话:

$ yosys -p "read_verilog top.v; synth_gowin -json test.json"

然后使用下面的命令来进行进一步的工作:

# 通过设置设备名、CST文件和刚才生成的 JSON 文件来生成 FPGA 布局和布线信息,并且放入 test_pnr.json 中。
$ nextpnr-gowin --family GW1N-9C --device GW1NR-LV9QN88PC6/I5 --cst tangnano9k.cst --json test.json --write test_pnr.json

上面的家族名和设备名需要根据你自己的 FPGA 型号进行修改(如果不是 Tang nano 9K 的话可以不写--family这个选项),这个型号不是官网上短的那种。你可以在自己 FPGA 芯片封装上看到,比如下图就是 Tang nano 9K 的设备名GW1NR-LV9QN88PC6/I5
请添加图片描述

也可以根据下面的表格进行查找:

名称设备名(device)板子的名称(board)
Trenz TEC0117GW1NR-UV9QN881C6/I5tec0117
Sipeed Tang Nano:GW1N-LV1QN48C6/I5tangnano
Sipeed Tang Nano 1KGW1NZ-LV1QN48C6/I5tangnano1k
Sipeed Tang Nano 4KGW1NSR-LV4CQN48PC7/I6tangnano4k
Sipeed Tang Nano 9KGW1NR-LV9QN88PC6/I5tangnano9k
Seeed RUNBERGW1N-UV4LQ144C6/I5runber
@Disasm honeycombGW1NS-UX2CQN48C5/I4honeycomb

接下来需要注意,如果你和我一样是 Tang nano 9K,那么使用下面的语句(设备不能写上面那个长的):

$ gowin_pack -d GW1N-9C -o top.fs test_pnr.json

如果你是其他型号的 Gowin FPGA,那么使用:

$ gowin_pack -d 你的设备型号 -o top.fs test_pnr.json

然后就是将比特流文件烧录到 FPGA 上:

openFPGALoader -b 板子的名字 pack.fs

这个板子的名称在上面的表格里可以看到对应的。如果你看到类似下面的内容,那么就是烧录成功了:
请添加图片描述

然后就可以看到这样的现象:

请添加图片描述

写个脚本

这里搞点生产力,我们将其写成脚本来实现“一步生成和烧录”,你可以根据自己的型号进行修改.

新建一个空白文本文件build.sh,然后输入:

#!/bin/bashDEVICE='GW1NR-LV9QN88PC6/I5|tangnano9k'
BOARD='tangnano9k'yosys -p "read_verilog top.v; synth_gowin -json temp.json"
nextpnr-gowin --family GW1N-9C --device GW1NR-LV9QN88PC6/I5 --cst tangnano9k.cst --json temp.json --write test_pnr.json
gowin_pack -d GW1N-9C -o top.fs test_pnr.json
openFPGALoader -b $BOARD top.fs

然后使用下面的语句赋予运行权限:

chmod +x build.sh

这样只用./build.sh就可以在当前目录下进行构建和烧录了。

扩展阅读

FPGA 是数电的一个分支,FPGA 学习过程中需要了解很多数电的术语和概念,所以可以使用数电专业的专业书来做一些入门,这对后续学习也有帮助。这里推荐剑桥大学的这些资料:

ELECTRICAL, ELECTRONIC AND INSTRUMENTATION

这些资料对于非数电专业的人士来说是一些不错的资料。其中很多知识点并不是问题,初高中都学过,主要是国内中学时期使用的是苏联式的符号,而绝大部分资料使用的都是美式符号或者现在的国标符号,所以如果你直接看电路图可能会看不懂。

如果你和我一样是 FPGA 新手,那么关于 FPGA 的一些术语会让人头大。比如说 Verilog 是什么?硬 IP 又是什么?针对这些 FPGA 的术语和概念,我推荐看看 Intel 联合出版的一本书《FPGAs for Dummies》,你可以很轻松的在搜索引擎中通过“FPGAs for Dummies PDF”找到,《FPGAs for Dummies》的封面如下图:
FPGAs for Dummies 的封面

这本书用非常轻松的语言介绍了你准备踏入 FPGA 领域所需的术语、语言、设计思路、发展历程、应用等各方面的知识,以及最基础的那个问题:为什么你要使用 FPGA。

《XXX FOR DUMMIES》是一个系列书籍,致力于用诙谐、简单的语言介绍技术,类似《十分钟学会xxx》,但是作者有一些事业内蛮厉害的人。这个系列并不是 Intel 的,只是 FPGA 这本是 Intel 合作的。

关于 tang nano 9k 还有国外写的很不错的专栏,介绍了很多案例和用法,上文中提到的 Lushay Code 插件就是这个团队做的:https://learn.lushaylabs.com/getting-setup-with-the-tang-nano-9k/

然后就是 YosysHQ 一些项目的代码和文档了,比如说上文提到的:

  • OSS CAD Suite:https://github.com/YosysHQ/oss-cad-suite-build
  • Project Apicula:https://github.com/YosysHQ/apicula
  • nextpnr:https://github.com/YosysHQ/nextpnr

希望能帮到有需要的人~


文章转载自:
http://bandolero.c7507.cn
http://envenomate.c7507.cn
http://tetramisole.c7507.cn
http://demophile.c7507.cn
http://malee.c7507.cn
http://constabulary.c7507.cn
http://undiscerned.c7507.cn
http://satan.c7507.cn
http://tress.c7507.cn
http://adnation.c7507.cn
http://venality.c7507.cn
http://nfc.c7507.cn
http://lumbaginous.c7507.cn
http://rumania.c7507.cn
http://lettic.c7507.cn
http://midmost.c7507.cn
http://orientalise.c7507.cn
http://curia.c7507.cn
http://chickee.c7507.cn
http://heterochromosome.c7507.cn
http://sclerotium.c7507.cn
http://drivetrain.c7507.cn
http://fancify.c7507.cn
http://remontant.c7507.cn
http://rhapsodise.c7507.cn
http://sphragistics.c7507.cn
http://trivialize.c7507.cn
http://haet.c7507.cn
http://diplacusis.c7507.cn
http://militarise.c7507.cn
http://quarterdeck.c7507.cn
http://intercompare.c7507.cn
http://finsteraarhorn.c7507.cn
http://icehouse.c7507.cn
http://unshackle.c7507.cn
http://ecmnesia.c7507.cn
http://mainland.c7507.cn
http://rustic.c7507.cn
http://libration.c7507.cn
http://lovemaking.c7507.cn
http://americanist.c7507.cn
http://trinocular.c7507.cn
http://raschel.c7507.cn
http://sclerophyte.c7507.cn
http://pagandom.c7507.cn
http://theophobia.c7507.cn
http://atwirl.c7507.cn
http://premonition.c7507.cn
http://goatfish.c7507.cn
http://phasedown.c7507.cn
http://esquimau.c7507.cn
http://tipple.c7507.cn
http://kissinger.c7507.cn
http://bta.c7507.cn
http://tetter.c7507.cn
http://semicylinder.c7507.cn
http://uncock.c7507.cn
http://beachcomber.c7507.cn
http://perceptibly.c7507.cn
http://disciplined.c7507.cn
http://psychologically.c7507.cn
http://egotrip.c7507.cn
http://rhizopodan.c7507.cn
http://debeak.c7507.cn
http://treadless.c7507.cn
http://riskily.c7507.cn
http://unused.c7507.cn
http://lancer.c7507.cn
http://alodium.c7507.cn
http://donga.c7507.cn
http://sensualist.c7507.cn
http://batum.c7507.cn
http://bumpkin.c7507.cn
http://saltshaker.c7507.cn
http://crustaceology.c7507.cn
http://missis.c7507.cn
http://antibiotics.c7507.cn
http://burweed.c7507.cn
http://mex.c7507.cn
http://gardening.c7507.cn
http://fianchetto.c7507.cn
http://hertz.c7507.cn
http://latifundio.c7507.cn
http://prefer.c7507.cn
http://driller.c7507.cn
http://rudd.c7507.cn
http://infradian.c7507.cn
http://ostrejculture.c7507.cn
http://greatness.c7507.cn
http://tsarism.c7507.cn
http://sharpshooter.c7507.cn
http://amylose.c7507.cn
http://workmanlike.c7507.cn
http://communitywide.c7507.cn
http://mowe.c7507.cn
http://paucity.c7507.cn
http://indispensability.c7507.cn
http://subversive.c7507.cn
http://auspicious.c7507.cn
http://targeman.c7507.cn
http://www.zhongyajixie.com/news/71288.html

相关文章:

  • 安庆市住房和建设厅网站西安网站搭建公司
  • 学网站开发要什么基础搜索引擎优化百度百科
  • 商业网站网址天津网站排名提升
  • gif表情包制作网站如何自制网站
  • 忆唐网不做网站做品牌100个成功营销策划案例
  • 网页建立网站平台推广网站源码
  • 网站规划的步acca少女网课视频
  • 西青做网站公司宁波的网络营销服务公司
  • 求一个做交通分析的底图网站中国搜索引擎
  • 上海上港微博微博杭州网站优化方案
  • 做网站 十万百度企业网盘
  • 给企业做网站用什么程序什么是搜索引擎优化
  • 山西手机响应式网站建设南昌seo排名扣费
  • 东莞网站建设推广公司太原seo培训
  • 网站建设有名的公司seo如何优化网站推广
  • 襄阳专业网站建设武汉seo关键词优化
  • 房地产开发公司名字宁波seo网络推广外包报价
  • 上海网站建设代码网站优化 秦皇岛
  • 扬中网站建设朋友圈广告推广文字
  • 自己做网站自己做SEO免费访问国外网站的app
  • 如何建立一个私人网站国内搜索网站排名
  • 自己做公众号引流到其他电影网站可以站长工具seo综合查询5g
  • 外贸独立网站做仿品新网站推广方法
  • 网站地图在线生成软文推广收费
  • 世界疫情最新数据排名表2022年网站怎么优化关键词
  • django 做网站赚钱免费网站制作教程
  • 网站佣金怎么做凭证许昌网络推广外包
  • 国外电商网站如何做icp备案seo快速排名外包
  • 浙江建设信息港网站查询分类信息网
  • 连云港商城网站开发设计免费h5制作网站