1. 程式人生 > >Chisel 語言(Scala)學習 2 例項化模型和向量操作

Chisel 語言(Scala)學習 2 例項化模型和向量操作

Chisel 語言學習 2 例項化模型和向量操作

系列文章主要用來記錄學習Chisel和scala過程中遇到的難點或知識點

例項化模型:

帶有進位的加法器
這裡寫圖片描述

Chisel程式碼如下:

// A 4-bit adder with carry in and carry out
class Adder4 extends Module {
  val io = IO(new Bundle {
    val A    = Input(UInt(4.W))
    val B    = Input(UInt(4.W))
    val Cin  = Input(UInt(1.W))
    val Sum  = Output(UInt(4.
W)) val Cout = Output(UInt(1.W)) }) // Adder for bit 0 val Adder0 = Module(new FullAdder()) Adder0.io.a := io.A(0) Adder0.io.b := io.B(0) Adder0.io.cin := io.Cin val s0 = Adder0.io.sum // Adder for bit 1 val Adder1 = Module(new FullAdder()) Adder1.io.a := io.A(1) Adder1.io.b := io.B
(1) Adder1.io.cin := Adder0.io.cout val s1 = Cat(Adder1.io.sum, s0) // Adder for bit 2 val Adder2 = Module(new FullAdder()) Adder2.io.a := io.A(2) Adder2.io.b := io.B(2) Adder2.io.cin := Adder1.io.cout val s2 = Cat(Adder2.io.sum, s1) // Adder for bit 3 val Adder3 = Module(new FullAdder()) Adder3.io
.a := io.A(3) Adder3.io.b := io.B(3) Adder3.io.cin := Adder2.io.cout io.Sum := Cat(Adder3.io.sum, s2).asUInt io.Cout := Adder3.io.cout }

向量操作

val myVec = Vec(Seq.fill( <number of elements> ) { <data type> })

eg:

val ufix5_vec10 := Vec(Seq.fill(10) { UInt(5.W) })

定義一個向量暫存器:

val reg_vec32 = Reg(Vec(Seq.fill(32){ UInt() }))

定義一個16位加法器(向量的值包含例項時,我們用io來定義):

val FullAdders = 
  Vec(Seq.fill(16){ Module(new FullAdder()).io })

為了使程式碼簡潔,我們可以用下面這種寫法:

val initValues = Seq.fill(4) { 0.U(8.W) }
  val delays = RegInit(Vec(initValues))

相關推薦

Chisel 語言Scala學習 2 例項模型向量操作

Chisel 語言學習 2 例項化模型和向量操作 系列文章主要用來記錄學習Chisel和scala過程中遇到的難點或知識點 例項化模型: 帶有進位的加法器 Chisel程式碼如下:

git的使用學習github遠端庫的連線同步操作

1.github遠端庫的連線 開啟github官網github. 登入之後 點選這個 然後 輸入名字點選建立就會跳轉到這個介面 我們用紅色箭頭指的現有的庫 然後開啟git 1.這是把本地庫主分支的內容匯入到遠端庫 git push -u origin master 注

OpenGL GeometryInstancing 幾何體例項

幾何體例項化( GeometryInstancing ),是一種用於大批量重複物件渲染的GPU技術,以降低客戶端和顯示卡端資料傳輸量,所謂的“一次提交,多次渲染”。簡單說來就是合併DrawCall。原理通過glDrawElementsInstanced(GL_TRIANGLE

7學習tp5之控制器原理使用

系統學習tp5框架,請點選下面的連線控制器的名稱空間從何而來,如何修改修改名稱空間的方式:注意:改config.php中的app_namespace配置是沒用的; 我用的是第2種方式,改完之後控制器的名稱空間不要忘記也改成xg\模組名\controller不繼承基類調模板如:

Spring啟動流程之Bean初始前後的一些操作

【Spring原始碼分析】非懶載入的單例Bean初始化前後的一些操作   再看AbstractApplicationContext的refresh方法中的細節: Spring預設載入的兩個Bean,systemProperties和systemEnvironment,

資料結構筆記靜態連結串列的實現基本操作

一、靜態連結串列的定義 用資料替代指標,來描述單鏈表。首先,資料的元素由兩個資料域組成,data和cur。資料域data,用來存放資料元素,即要處理的資料;遊標cur相當於單鏈表中的next指標。 //線性表的靜態單鏈表儲存結構 #define MAXSIZ

快看Sample代碼,速學Swift語言2-基礎介紹 快看Sample代碼,速學Swift語言1-語法速覽

ora ati 自動 一起 系統 welcome 布爾類型 效率 八進制 快看Sample代碼,速學Swift語言(2)-基礎介紹 Swift語言是一個新的編程語言,用於iOS, macOS, watchOS, 和 tvOS的開發,不過Swift很多部分內容,我們可以從

Log4net學習系列——Log4net的例項

一、log4net簡單例項建立步驟如下 1、第一步:在專案中新增對log4net.dll的引用,這裡引用版本是2.0.8.0 2、第二步:程式啟動時讀取log4net的配置檔案。   讀取log4net的配置檔案有兩種方式   (1)如果是CS程式,在根目錄的Program.cs中的Main方法中新增

大資料學習初級入門教程 —— Hadoop 2.x 的安裝、啟動測試

大資料最基礎的就是資料的儲存和計算,而 Hadoop 就是為儲存和計算而生,是最基礎的大資料處理工具。這篇簡單寫寫 Hadoop 2.x 的安裝,啟動和測試。 一、準備環境 大資料環境的部署,一般都是叢集,機器數量為奇數,這裡以 5 臺機器為例,作業系統為 CentOS 6.9_x64;

《使用Python進行自然語言處理Nltk2

import nltk from nltk.corpus import * '''1、古騰堡語料庫''' gutenberg.fileids() #所有古騰堡語料庫中的文字 emma = nltk.corpus.gutenberg.words('austen-e

Vue學習:Vue例項

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue例項建立</title> </head> &l

Python--列表list、元組(tuple)、字典dict 學習總結2

目錄 建立空元組 (2)、元組---tuple 1、元組的定義 tuple (元組) 與列表相似,不同之處是元組的  元素不能修改  元組   表示多個元素組成的序列 元組  在Python開發中有特定的應用場景 用於儲存  一串 資

Swift教程_零基礎學習Swift完整例項_swift完整例項構建展示層

本章節主要來完善前前面已經建立好的storyboard中的頁面,包括自定義的view等。 1.PKOElementTableViewCell 該自定義view作為列表的行view,包含左側的圖片以及中間的文字描述。這裡要注意需要通過setNeedsDisplay告訴系統進行繪製。 程式碼如下。 import

Swift教程_零基礎學習Swift完整例項_swift完整例項新增View的動畫效果、新增View的陰影

6.新增View的動畫效果 本章節主要來做明細頁面點選後翻轉的動畫效果,該效果可以進行多種改變,以達到想要的效果。 1.首先我們需要進行翻轉的正反兩個view,前面我們已經做好了,分別是PKOElementDetailImageView和PKOElementDetailIm

Mysql學習SparkScala寫入Mysql的兩種方式

package total import org.apache.spark.sql.{DataFrame, Row, SQLContext, SparkSession} import org.apache.spark.{SparkConf, SparkContext} imp

各種音視訊編解碼學習詳解之 編解碼學習筆記:Mpeg系列——Mpeg 1Mpeg 2

    最近在研究音視訊編解碼這一塊兒,看到@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,非常感謝,佩服的五體投地。奈何大神這邊文章太長,在這裡我把它分解很多小的篇幅,方便閱讀。大神部落格傳送門:https://www.cnblogs.com/skyofbitbit

Torch7學習——學習神經網路包的用法2

總說 上篇部落格已經初步介紹了Module類。這裡將更加仔細的介紹。並且還將介紹Container, Transfer Functions Layers和 Simple Layers模組。 Module 主要有4個函式。 1. [output]f

Struts2 學習之路2.2 完成簡單的統計使用者線上人數小功能

實時更新使用者線上人數(通過將使用者人數資料放入application的域屬性裡實現) 使用者登入後,顯示使用者名稱和當前線上人數+1 使用者登出後,當前線上人數-1 程式碼 1.前臺請求頁面

機器學習1——學習樸素貝葉斯-三種模型理論+python程式碼程式設計例項

本文來源於: 部落格:http://blog.csdn.net/u012162613/article/details/48323777 http://blog.csdn.net/zhihaoma/article/details/51052064  感謝作者的分享,非常感謝

Servlet學習Servlet程式設計例項-網站登入修改版-增加資料庫-附原始碼

public class UserDaoImpl implements UserDao{     /**     * 新增使用者資訊     * @param conn     * @param user     * @throws SQLException     */     @Override