中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

做磁力網(wǎng)站qq群怎么優(yōu)化排名靠前

做磁力網(wǎng)站,qq群怎么優(yōu)化排名靠前,昆山網(wǎng)站開發(fā)公司,佛山集團(tuán)網(wǎng)站建設(shè)Chisel入門——在windows系統(tǒng)下部署Chisel環(huán)境并點(diǎn)亮FPGA小燈等實(shí)驗(yàn) 一、chisel簡(jiǎn)介二、vscode搭建scala開發(fā)環(huán)境2.1 安裝Scala官方插件2.2 java版本(本人用的是jdk18)2.3 下載Scala Windows版本的二進(jìn)制文件2.4 配置環(huán)境變量2.5 scala測(cè)試2.6 vscode運(yùn)行…

Chisel入門——在windows系統(tǒng)下部署Chisel環(huán)境并點(diǎn)亮FPGA小燈等實(shí)驗(yàn)

  • 一、chisel簡(jiǎn)介
  • 二、vscode搭建scala開發(fā)環(huán)境
    • 2.1 安裝Scala官方插件
    • 2.2 java版本(本人用的是jdk18)
    • 2.3 下載Scala Windows版本的二進(jìn)制文件
    • 2.4 配置環(huán)境變量
    • 2.5 scala測(cè)試
    • 2.6 vscode運(yùn)行scala
  • 三、windows安裝sbt
    • 3.1、sbt下載及安裝
    • 3.2 配置環(huán)境變量
    • 3.3 sbt配置
    • 3.4測(cè)試
  • 四、用Chisel點(diǎn)亮FPGA小燈
    • 4.1 Hello world 實(shí)現(xiàn)
    • 4.2 上板驗(yàn)證
  • 五、在DE2-115開發(fā)板上實(shí)現(xiàn)流水燈
  • 六、心得體會(huì)

一、chisel簡(jiǎn)介

傳統(tǒng)數(shù)字芯片的RTL設(shè)計(jì)采用Verilog語(yǔ)言為主,Chisel語(yǔ)言的全稱是Constructing Harward in Scala Embeded Language,即在Scala語(yǔ)言中導(dǎo)入Chisel3庫(kù),即可使用Chisel語(yǔ)言。其特點(diǎn)是面向?qū)ο缶幊?#xff0c;可以方便地參數(shù)化定制硬件電路,加快設(shè)計(jì)流程。目前在RISC-V生態(tài)中應(yīng)用較多,中科院計(jì)算所主持的培育下一代處理器設(shè)計(jì)人才的“一生一芯”項(xiàng)目也在極力推進(jìn)該語(yǔ)言。

Chisel是一個(gè)Scala庫(kù),用于構(gòu)建高級(jí)別的、可綜合的、模塊化的硬件設(shè)計(jì)。它允許設(shè)計(jì)師在高層次上定義硬件的行為,然后通過(guò)一系列的轉(zhuǎn)換步驟將其轉(zhuǎn)換為低層次的Verilog或VHDL代碼。這使得設(shè)計(jì)師可以專注于實(shí)現(xiàn)硬件的功能,而不需要關(guān)心底層的細(xì)節(jié)。

Chisel的主要特點(diǎn)包括:

高級(jí)抽象:使用Scala的高級(jí)別抽象來(lái)描述硬件行為。
可綜合:生成的Verilog或VHDL代碼可以直接用于ASIC或FPGA的設(shè)計(jì)。
模塊化:可以將設(shè)計(jì)分解為多個(gè)獨(dú)立的模塊,每個(gè)模塊都可以獨(dú)立地進(jìn)行測(cè)試和驗(yàn)證。
交互式開發(fā):可以在Scala REPL中直接運(yùn)行Chisel代碼,以便于調(diào)試和驗(yàn)證。

為什么要提出Chisel?
Chisel的設(shè)計(jì)者們是這么說(shuō)的(以下翻譯自官網(wǎng)Motivation – “Why Chisel?”):

在我們的科研項(xiàng)目和硬件設(shè)計(jì)課程中,與現(xiàn)有硬件描述語(yǔ)言進(jìn)行了多年的斗爭(zhēng),這促使我們開發(fā)一種新的硬件語(yǔ)言。Verilog和VHDL是作為硬件仿真語(yǔ)言開發(fā)的,直到后來(lái)它們才成為硬件綜合的基礎(chǔ)。這些語(yǔ)言的大部分語(yǔ)義不適用于硬件綜合,事實(shí)上,許多結(jié)構(gòu)都無(wú)法綜合。其他結(jié)構(gòu)在他們?nèi)绾斡成涞接布?shí)現(xiàn)是很不直觀的,或者說(shuō)他們的使用可能會(huì)意外地導(dǎo)致非常低效的硬件結(jié)構(gòu)。雖然可以使用這些語(yǔ)言的子集并且還能得到可以接受的效果,但它們?nèi)匀怀尸F(xiàn)出混亂和令人困惑的規(guī)范模型,特別是在教學(xué)環(huán)境中。

然而,我們開發(fā)新硬件語(yǔ)言的最強(qiáng)烈動(dòng)機(jī)是我們希望改變電子系統(tǒng)設(shè)計(jì)的方式。我們認(rèn)為,重要的是不僅要教學(xué)生如何設(shè)計(jì)電路,還要教他們?nèi)绾卧O(shè)計(jì)電路生成器——從高級(jí)設(shè)計(jì)參數(shù)和約束自動(dòng)生成設(shè)計(jì)的程序。通過(guò)電路生成器,我們希望利用設(shè)計(jì)專家的辛勤工作,為大家提高設(shè)計(jì)抽象水平。為了表達(dá)靈活和可拓展的電路結(jié)構(gòu),電路生成器必須采用復(fù)雜的編程技術(shù)來(lái)確定如何根據(jù)高級(jí)參數(shù)值和約束更好地定制其輸出電路。雖然Verilog和VHDL包含一些用于編程電路生成的原始結(jié)構(gòu),但它們?nèi)狈ΜF(xiàn)代編程語(yǔ)言中的強(qiáng)大功能,例如面向?qū)ο缶幊?、類型推斷、?duì)函數(shù)式編程的支持以及反射等。

我們沒(méi)有從頭開始構(gòu)建新的硬件設(shè)計(jì)語(yǔ)言,而是選擇在現(xiàn)有語(yǔ)言中嵌入硬件構(gòu)造原語(yǔ),我們選擇Scala不僅是因?yàn)樗覀冋J(rèn)為對(duì)于構(gòu)建電路生成器很重要的編程特性,還因?yàn)樗菍iT作為特定領(lǐng)域語(yǔ)言(DSL)的基礎(chǔ)而開發(fā)的。

這里只做簡(jiǎn)單的介紹:更多資料可以查看以下鏈接
鏈接: link

二、vscode搭建scala開發(fā)環(huán)境

2.1 安裝Scala官方插件

在VS Code中安裝插件,先安裝 Scala Syntax (official),再安裝 Scala (Metals):
在這里插入圖片描述
第一個(gè)和第二個(gè)都需要安裝

2.2 java版本(本人用的是jdk18)

注意可能部分jdk不適配
在這里插入圖片描述
直接打開終端,輸入

java -version

在這里插入圖片描述

2.3 下載Scala Windows版本的二進(jìn)制文件

下載鏈接:link

在這里插入圖片描述
然后一直點(diǎn)擊next即可

注意需要記得安裝的路徑
在這里插入圖片描述

2.4 配置環(huán)境變量

1、變量值即為安裝的路徑
在這里插入圖片描述
2.PATH變量下再新增值
在這里插入圖片描述

2.5 scala測(cè)試

終端輸入scala,出現(xiàn)以下信息即可
在這里插入圖片描述

2.6 vscode運(yùn)行scala

在這里插入圖片描述
代碼如下:

object HelloWorld 
{    def main(args: Array[String]): Unit = {println("Hello, world!")    }
}

在這里插入圖片描述

三、windows安裝sbt

3.1、sbt下載及安裝

官網(wǎng):http://www.scala-sbt.org/download.html
如果下載的是壓縮文件,解壓后需要配置環(huán)境變量等
通過(guò)下面這種方式一般都自動(dòng)配置好了環(huán)境變量

點(diǎn)擊next即可,還是要記住安裝路徑()
在這里插入圖片描述

3.2 配置環(huán)境變量

這里和sacla的配置內(nèi)容相同
在這里插入圖片描述
在這里插入圖片描述

3.3 sbt配置

修改 sbt\conf\sbtconfig.txt 為以下內(nèi)容:

# sbt configuration file for Windows# Set the java args#-mem 1024 was added in sbt.bat as default-Xms1024m
-Xmx1024m
-Xss4M
-XX:ReservedCodeCacheSize=128m# Set the extra sbt options-Dsbt.log.format=true
-Dsbt.boot.directory=D:/sbt/boot/
-Dsbt.global.base=D:/sbt/.sbt
-Dsbt.ivy.home=D:/sbt/.ivy2
-Dsbt.repository.config=D:/sbt/conf/repo.properties
-Dsbt.override.build.repos=true

設(shè)置阿里云鏡像,國(guó)內(nèi)的網(wǎng)絡(luò)環(huán)境復(fù)雜,在 sbt\conf\ 下新建 repo.properties 文件,內(nèi)容為

[repositories]localaliyun-central: https://maven.aliyun.com/repository/centralaliyun-public: https://maven.aliyun.com/repository/publicjcenter: https://jcenter.bintray.com/repo1: https://repo1.maven.org/maven2/store_2: https://repo2.maven.org/maven2/aliyun-releases: https://maven.aliyun.com/repository/releasesaliyun-apache-snapshots: https://maven.aliyun.com/repository/apache-snapshotsaliyun-google: https://maven.aliyun.com/repository/googlealiyun-jcenter: https://maven.aliyun.com/repository/jcenteraliyun-spring: https://maven.aliyun.com/repository/springaliyun-spring-plugin: https://maven.aliyun.com/repository/spring-pluginsbt-plugin: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/sonatype: https://oss.sonatype.org/content/repositories/snapshots  typesafe: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnlytypesafe2: https://repo.typesafe.com/typesafe/releases/atlassian: https://packages.atlassian.com/content/repositories/atlassian-public/spring-plugin: https://repo.spring.io/plugins-release/hortonworks: https://repo.hortonworks.com/content/repositories/releases/

3.4測(cè)試

完成后打開cmd,輸入 sbt,可能會(huì)有一段下載依賴包的過(guò)程,成功后會(huì)進(jìn)入命令行,即sbt安裝成功
在這里插入圖片描述
退出方式:在命令框中輸入 exit 即可退出
在這里插入圖片描述

四、用Chisel點(diǎn)亮FPGA小燈

參考的chisel書為chisel-book,是一個(gè)PDF文檔,
鏈接: link
在這里插入圖片描述

4.1 Hello world 實(shí)現(xiàn)

在這里插入圖片描述
我們從書上找到相應(yīng)的代碼,然后把代碼拉下來(lái)

git clone https://gitcode.com/schoeberl/chisel-examples.git

在這里插入圖片描述

我們知道FPGA需要的是.v文件,顯然我們拉下來(lái)的代碼并沒(méi)有這個(gè)文件,所以我們需要進(jìn)行一些處理

來(lái)到當(dāng)前文件目錄,運(yùn)行 sbt run
在這里插入圖片描述

第一次編譯需要等待一段時(shí)間,然后顯示成功。
hello.scala
在這里插入圖片描述

//點(diǎn)亮小燈
/** This code is a minimal hardware described in Chisel.* * Blinking LED: the FPGA version of Hello World*/
// 
import chisel3._
// 
/*** The blinking LED component.*/
// 
class Hello extends Module {val io = IO(new Bundle {val led = Output(UInt(1.W))})val CNT_MAX = (50000000 / 2 - 1).U
// val cntReg = RegInit(0.U(32.W))val blkReg = RegInit(0.U(1.W))
// cntReg := cntReg + 1.Uwhen(cntReg === CNT_MAX) {cntReg := 0.UblkReg := ~blkReg}io.led := blkReg
}
// 
/*** An object extending App to generate the Verilog code.*/
object Hello extends App {(new chisel3.stage.ChiselStage).emitVerilog(new Hello())
}

然后即可生成.v文件
在這里插入圖片描述

hello.v文件如下

在這里插入圖片描述
以及頂層文件 hello_top.v:

在這里插入圖片描述

4.2 上板驗(yàn)證

  1. 創(chuàng)建quartus項(xiàng)目
    板子型號(hào)為 EP4CE115F29C7

  2. 加入.v文件
    將生成的 Hello.v文件 和 hello_top.v文件 添加到項(xiàng)目中,并設(shè)置hello_top.v為頂層文件:

3、引腳綁定
在這里插入圖片描述

4、燒入
實(shí)驗(yàn)結(jié)果如下:
在這里插入圖片描述

五、在DE2-115開發(fā)板上實(shí)現(xiàn)流水燈

步驟和上面相似:

修改 Hello.scala 文件為:

import chisel3._
import chisel3.util._class Hello extends Module {val io = IO(new Bundle {val led = Output(UInt(8.W))  // 8 位 LED 輸出})val maxCount = (50000000 / 10).U  // 調(diào)整這個(gè)參數(shù)改變流水燈的速度(DE2-115 使用 50MHz 時(shí)鐘)val counter = RegInit(0.U(32.W))val position = RegInit(0.U(3.W))// 計(jì)數(shù)器邏輯counter := counter + 1.Uwhen(counter === maxCount) {counter := 0.Uwhen(position === 7.U) {position := 0.U}.otherwise {position := position + 1.U}}// LED 輸出邏輯io.led := (1.U << position)
}object Hello extends App {(new chisel3.stage.ChiselStage).emitVerilog(new Hello())
}

修改后再次運(yùn)行
在這里插入圖片描述
hello.v 文件

module Hello(input        clock,input        reset,output [7:0] io_led
);
`ifdef RANDOMIZE_REG_INITreg [31:0] _RAND_0;reg [31:0] _RAND_1;
`endif // RANDOMIZE_REG_INITreg [31:0] counter; // @[Hello.scala 10:24]reg [2:0] position; // @[Hello.scala 11:25]wire [31:0] _counter_T_1 = counter + 32'h1; // @[Hello.scala 14:22]wire [2:0] _position_T_1 = position + 3'h1; // @[Hello.scala 20:28]assign io_led = 8'h1 << position; // @[Hello.scala 25:18]always @(posedge clock) beginif (reset) begin // @[Hello.scala 10:24]counter <= 32'h0; // @[Hello.scala 10:24]end else if (counter == 32'h4c4b40) begin // @[Hello.scala 15:30]counter <= 32'h0; // @[Hello.scala 16:13]end else begincounter <= _counter_T_1; // @[Hello.scala 14:11]endif (reset) begin // @[Hello.scala 11:25]position <= 3'h0; // @[Hello.scala 11:25]end else if (counter == 32'h4c4b40) begin // @[Hello.scala 15:30]if (position == 3'h7) begin // @[Hello.scala 17:28]position <= 3'h0; // @[Hello.scala 18:16]end else beginposition <= _position_T_1; // @[Hello.scala 20:16]endendend
// Register and memory initialization
`ifdef RANDOMIZE_GARBAGE_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_INVALID_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_REG_INIT
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_MEM_INIT
`define RANDOMIZE
`endif
`ifndef RANDOM
`define RANDOM $random
`endif
`ifdef RANDOMIZE_MEM_INITinteger initvar;
`endif
`ifndef SYNTHESIS
`ifdef FIRRTL_BEFORE_INITIAL
`FIRRTL_BEFORE_INITIAL
`endif
initial begin`ifdef RANDOMIZE`ifdef INIT_RANDOM`INIT_RANDOM`endif`ifndef VERILATOR`ifdef RANDOMIZE_DELAY#`RANDOMIZE_DELAY begin end`else#0.002 begin end`endif`endif
`ifdef RANDOMIZE_REG_INIT_RAND_0 = {1{`RANDOM}};counter = _RAND_0[31:0];_RAND_1 = {1{`RANDOM}};position = _RAND_1[2:0];
`endif // RANDOMIZE_REG_INIT`endif // RANDOMIZE
end // initial
`ifdef FIRRTL_AFTER_INITIAL
`FIRRTL_AFTER_INITIAL
`endif
`endif // SYNTHESIS
endmodule

(這個(gè)實(shí)驗(yàn)直接把hello.v文件設(shè)為top文件即可,不需要加其他文件了)

然后依照和上面一樣即可

引腳綁定信息如下:

在這里插入圖片描述
實(shí)驗(yàn)效果:需要按住key0
在這里插入圖片描述

六、心得體會(huì)

初次使用chisel,說(shuō)實(shí)話遇到了許多的困難,無(wú)論是軟件安裝還是例子的尋找的遇到了一定的問(wèn)題,最后磕磕絆絆終于完成了本次實(shí)驗(yàn)。
Chisel以Scala為基礎(chǔ),它的抽象級(jí)別高,極大提升了硬件設(shè)計(jì)效率,讓代碼更簡(jiǎn)潔且易于維護(hù)。通過(guò)Chisel,我體驗(yàn)了用近似軟件工程的思維做硬件設(shè)計(jì)的便捷,特別是在模塊化、參數(shù)化設(shè)計(jì)上的優(yōu)勢(shì),這為復(fù)用代碼和快速迭代創(chuàng)造了條件。Chisel結(jié)合Scala的強(qiáng)大生態(tài),使得測(cè)試和驗(yàn)證更加高效,同時(shí)降低了硬件設(shè)計(jì)的學(xué)習(xí)曲線,尤其適合教學(xué)和研究用途。
感謝這些文章
https://blog.csdn.net/weixin_43681766/article/details/124905667

https://blog.csdn.net/zhengwenbang/article/details/108483335

http://www.risenshineclean.com/news/5089.html

相關(guān)文章:

  • 甘肅省城鄉(xiāng)住房建設(shè)廳網(wǎng)站首頁(yè)快速排名點(diǎn)擊工具
  • 做網(wǎng)站的策劃需要做什么seo免費(fèi)軟件
  • 可信網(wǎng)站辦理今天疫情最新消息
  • 護(hù)膚品網(wǎng)站建設(shè)前的行業(yè)分析營(yíng)銷軟文怎么寫
  • 網(wǎng)易企業(yè)郵箱怎么發(fā)送文件seo網(wǎng)絡(luò)營(yíng)銷技巧
  • 唐山企業(yè)建網(wǎng)站山東seo推廣公司
  • 旅游攻略網(wǎng)站開發(fā)龍崗網(wǎng)站設(shè)計(jì)
  • 鎮(zhèn)江門戶網(wǎng)站是哪個(gè)百度精準(zhǔn)引流推廣
  • 個(gè)人設(shè)計(jì)網(wǎng)站模板競(jìng)價(jià)托管 微競(jìng)價(jià)
  • 怎么做網(wǎng)站制作網(wǎng)絡(luò)營(yíng)銷競(jìng)價(jià)推廣
  • 修改網(wǎng)站需要什么凡科建站
  • 企業(yè)手機(jī)端網(wǎng)站設(shè)計(jì)模板有域名了怎么建立網(wǎng)站
  • 大豐網(wǎng)站建設(shè)全網(wǎng)推廣軟件
  • 寧波建設(shè)網(wǎng)站價(jià)格seo是怎么優(yōu)化推廣的
  • 網(wǎng)站建設(shè)的作用網(wǎng)站流量來(lái)源
  • 做游戲下載網(wǎng)站賺錢中央人民政府網(wǎng)
  • 什么網(wǎng)站做設(shè)計(jì)可以賺錢搜索引擎營(yíng)銷是什么
  • 公司在網(wǎng)上做網(wǎng)站怎么做賬怎么注冊(cè)網(wǎng)站平臺(tái)
  • 無(wú)錫網(wǎng)站建設(shè)企業(yè)排名無(wú)錫營(yíng)銷型網(wǎng)站制作
  • 制作網(wǎng)站的策劃方案網(wǎng)站自建
  • 17網(wǎng)站一起做網(wǎng)店不發(fā)貨網(wǎng)上售賣平臺(tái)有哪些
  • 做短視頻網(wǎng)站產(chǎn)品營(yíng)銷方案案例范文
  • 網(wǎng)站怎么做谷歌權(quán)重色盲眼鏡
  • 武漢模板建站平臺(tái)哪家好鏈接提交工具
  • 杭州網(wǎng)站制如何在其他平臺(tái)做推廣
  • 濟(jì)南建站免費(fèi)模板瀏覽器網(wǎng)站進(jìn)入口
  • 北京出名做網(wǎng)站的公司如何做好推廣
  • 阿里云認(rèn)證網(wǎng)站建設(shè)題庫(kù)免費(fèi)制作網(wǎng)頁(yè)平臺(tái)
  • 企業(yè)做網(wǎng)站設(shè)計(jì)的北京網(wǎng)絡(luò)推廣外包公司排行
  • 成都市城鄉(xiāng)建設(shè)委員網(wǎng)站seo網(wǎng)站診斷價(jià)格