開発日記

Erlangをダラダラ書きます。

2021-12-01から1ヶ月間の記事一覧

Scala Hello

package Hello class Hello { private val name: String = "YMD" def Hello(num: Int): Unit = { for (i <- 1 to num) { println("Hello " + name) } } def Name: String = { name } } object Hello { def main(args: Array[String]) = { val hello = new He…

コンピュータの超基本

プログラム 計算の手順を示したもの メモリ上にある機械語(バイナリ) プログラム用語 オペコード(opcode)... 演算命令を指定 オペランド(operand)... 演算命令に用いる演算子 ISA バイナリと演算命令の対応表 コンピュータ構成要素 CPU(メモリから命…

パルス幅変調(PWM)

幅が変わる信号 信号が高い時間の割合(デューティサイクル)を変えることで変調 例 割合25%(12サイクル中3サイクルHigh) 割合50%(10サイクル中5サイクルHigh) 応用 ローパスフィルタを加えるとデジタル・アナログ変換回路になる

Chisel テスト

PeekPokeTester 用意するのは3つのファイル テストの流れ 便利なテスト関数 ScalaTest 波形表示 printfデバッグ PeekPokeTester 用意するのは3つのファイル DUT テスト回路 テストオブジェクト テストの流れ テスト対象のモジュール(DUT)をインスタンス化 …

カウンタ回路(Chisel)

カウンタ回路の用途 時間の間隔を定義? Chiselの実装例 # 豆知識 カウンタ回路の用途 イベントのカウント 時間の間隔を定義 時間の間隔を定義? 例えば,クロックのサイクル数をカウントして,指定の時間間隔が経過したら,動作トリガを起動 Chiselの実装例…

テスト・シミュレーションのメモ(System verilog)

`timescale `default_nettype module clk, rst その他信号 その他定数 テストするモジュールの宣言 initial $display logic宣言した信号初期化 クロック生成 クロックごとの処理 遅延追加 デバッグ出力 $finish だんだん完成に近づいていく. `timescale `ti…

情報科学における直交性とは?

システム内の要素の多寡を指し示す慣用的な用語 CISCは命令の直交性が高い RISCはレジスタの直交性が高い システム内の要素の多寡を指し示す慣用的な用語 どの要素も本質的には同じように振る舞うならば直交性が高いと表現する. ja.wikipedia.org CISCは命…

アドレッシング・モード RV32Iの例

レジスタ間接(ベースオフセット/レジスタオフセット) ロード命令 1. 符号拡張1バイトロード 2. ゼロ拡張1バイトロード 3. 符号拡張2バイトロード 4. ゼロ拡張2バイトロード 5. 4バイトロード(32bitだから符号拡張なし) 参考文献 レジスタ間接…

アドレッシング・モード

アドレッシング・モードとは? メモリを参照する方式(メモリアドレスの指定の方法) 参照したアドレスはなんて呼ぶ? 有効アドレス(Effective Address) アドレッシング・モードを構成する要素は? ベースポインタ/ベースレジスタ アクセスすべきメモリア…

メモリとHexファイルの話

Hexファイルの形式 実装1 実装2 FPGAを触っていると,バイナリをHexファイルに変換して読み込みたいときがある. (例えば,RISC-Vを自作しているときとか..FPGA内蔵メモリにHexファイルを埋め込みたい.. 今回は32bit命令を扱うメモリを例に考える. Hex…

Vivado教訓メモ(一行)

エラーメッセージ,実際のエラー箇所の,次の行をエラー判定しがち