2018-02-01から1ヶ月間の記事一覧
GreenVaves Technologies has developed a RISC-V based IoT application processor.For details, see the following page.www.readitquik.com fuse.wikichip.org
地球を訪れたエイリアンとのコンタクトを担当した言語学者ルイーズは、まったく異なる言語を理解するにつれ、驚くべき運命にまきこまれていく。 地球外生命体(エイリアン)とのファーストコンタクトを題材としたハードSFなのかと思いきや、注意深く読んでみ…
フリップフロップ(FF) SystemVerilogで各種FFを記述してみる。 D-FF(dflfl.sv) /* dflfl.sv */ module dflfl(input logic d, input logic clk, input logic reset, output logic q); always_ff @(posedge clk or posedge reset) begin if(reset) q <= 1'b0…
アインシュタインのことを思い浮かべていたら、アインシュタインが絶賛していたと言われるこの本を思い出した。タイトルは「数学は世界を変える あなたにとっての現代数学」。 短くシンプルな詩的な文章で書かれた数学の本。 難解な数式はなくスラスラと読み…
プログラミングや回路設計をしていると、CPUやOS、コンパイラなどの基盤技術について知りたくなる。そして、それが更に進むとCPUからアプリケーションまで一通り含めたコンピュータシステムを創ってみたくなる。これが、一番ありきたりな基盤技術(コンピュ…
先日、岡潔先生をモデルにしたドラマがTVで放送されていた。それで、先生の著作(「春宵十話」「春風夏雨」等)を思い出した。 世界的に有名な日本の数学者、岡潔先生。多変数複素函数論という難題を解いたことで知られる。 岡先生の著作には数学の他に、教…
本棚を整理していると懐かしい本を見つけた。タイトルは「アインシュタイン150の言葉」。 「私は、それほど賢くはありません。 ただ、人より長く 一つのことと付き合ってきただけなのです。」 「空想は知識より重要である。知識には限界がある。 想像力は世…
いかにして宇宙開発は始まったか。そして、現代の宇宙開発はどこまで進んでいて、宇宙人とのファーストコンタクトはありえそうなのか? 本書はジュール・ヴェルヌの作品「月世界に行く」から始まって、宇宙開発の扉を開いた名もなき科学者・技術者に焦点を当…
if __name__ == ‘__main__’: 以下のプログラムを実行すると"_name__"という変数を宣言していないのに、if __name__=='__main__'の実行結果がTrueとなる。調べてみると、"__name__"はPythonプリンタでPythonスクリプトを読み込むと自動的に作成されるようだ。…
エンコードルール(coding) 日本語など、ASCII以外の文字を含むスクリプトを作成する場合はエンコードルール(coding)をプログラムの最初に記述する。 エンコードルールの記述例(utf-8)(1) # coding: utf-8 エンコードルールの記述例(2) エンコー…
最近、ムーアの法則の終息についての記事をよく見かける(昔からよく言われて流けど)。それについて、ISSCC2018の講演でパターソン博士が「コンピュータアーキテクチャのルネッサンス期に入っているのではないか。」というコメントをしている。ムーアの法則…
Raspberry pi(Raspbian)のSSHを有効にする SSHが繋がらない ディスプレイなしでRaspberry piの設定してみると、なぜかSSHが繋がらない。調べてみたところ、RASPBIAN JESSIE 2016-11-25のバージョンから、セキュリティアップデートでSSHが初期設定で無効に…
RISC-Vの基本命令セットRV32Iについて(2) 条件分岐命令(Conditional Branches) imm rs2 rs1 funct3 imm opcode mnemonic 説明 [31:25] [24:20] [19:15] [14:12] [11:7] [6:0] offset rs2 rs1 000 offset 1100011 BEQ 「rs1=rs2」の時に分岐 offset rs2 …
タプル pythonのタプルを使ってみる。タプルは複数の要素を持つデータ構造でリストとほぼ同じように使用できるが、値を変更することができない(イミュターブルである)。また、リストに比べて実行速度が早い。 タプルの記述例 リストとタプルの違い リスト…
コマンドライン引数 pythonのコマンドライン引数を使ってみる。 コマンドライン引数を使用した記述例(argument.py) import sys args = sys.argv # Print argument list print(args) # Print argument. print("argument 0 : " + args[0]) print("argument 1…
ブロッキング代入とノンブロッキング代入 SystemVerilogにおいてのブロッキング代入、ノンブロッキング代入(並列信号代入)についてメモ。 ブロッキング代入 一つの代入処理が終了するまで次の処理を行わない(ブロックされる)。記述の順番が回路の動作に…
ARM Machine Learning ARMがAI用プロセッサ「ARM Machine Learning」を発表したのでメモしておく。 (2018年内にリリース予定みたい。) 特徴 自動翻訳、顔認識などの処理に特化 従来よりも2〜4倍の電力効率 モバイル端末に採用することを想定 クラウドではな…
RISC-Vの基本命令セットRV32I RISC-VのRV32Iについてメモ。 基本命令フォーマット(Base Instruction Formats) 整数演算命令(Integer Computational Instructions) レジスターレジスタ間演算(Integer Register-Register Operations) funct7 rs2 rs1 fun…
RISC-Vの特直(改めて) 単純な命令セット 条件フラグの削除 加減算のオーバーフローを無視 16ビット可変長な命令エンコーディング 分岐遅延スロットの削除 乗除算のためのHI/LOレジスタの削除 リトルエンディアン方式 命令セットアーキテクチャ(ISA)の構…
assertを使ってみる SystemVerilogのassert文を使って回路の動作を検証してみる。 assert文を使ったテストベンチ(adder_tb.sv) assert文は指定した条件のTrue/FalseをチェックしFalseの場合は$errorを実行する。このテストベンチではassert文を用いて入力…
買えばすむような物を作っていると、「どうして作っているの?買えばいいじゃん。」と言われることがある。物を作っている理由は深く考えたことはないのだが、強いて言えば「面白いから作っている。」のだと思う。ただただ、面白い物や便利な物を作りたいと…
SystemVerilogのデータタイプと数値表現 SystemVerilogのいくつかのデータタイプをテストしてみる。 データタイプ データタイプ ビット幅 内容 bit 1 2値の符号なし整数(ビット幅指定可) byte 8 2値の符号付き整数 shortint 16 2値の符号付き整数 int 32 2…
論理遅延 SystemVerilogで論理遅延を含めた回路を記述してみる。 論理遅延(logic_delay.sv) 論理遅延を含めたゲートの記述。論理遅延は"#"を用いて記述する。遅延の単位は`timescale 単位/時間精度で指定する。`timescaleで指定しない場合は遅延の単位は”n…
カウンタ、有限状態マシン SystemVerilogでカウンタ、有限状態マシンを記述してみる。 カウンタ カウンタ(counterN.sv) Nビットカウンタの記述。クロック信号(clk)の立ち上がり時にカウンター値(q)がカウントされる。なお、カウンターのリセットはリセッ…
ROM、RAM SystemVerilogでROM、RAMを記述してみる。 ROM(Read Only Memory) ROM(ROM.sv) 4ワード3ビットのROMの記述。ROMは組合わせ回路で実現できるためalways_comb文+case文で記述している。 /* rom.sv */ module rom (input logic [1:0] addr, output l…
比較器、乗算器 SystemVerilogで比較器、乗算器を記述してみる。 Comparator(比較器) 比較器(comparater.sv) 比較器の記述。入力信号a、bを比較してその結果を出力信号として出力している。 /* comparater */ module comparater #(parameter WIDTH = 4) (i…
ラッチ、レジスタ SystemVerilogで簡単なラッチ、レジスタを記述してみる。 ラッチ回路 ラッチ回路(d_latch.sv) Nbitラッチ回路の記述。always_latch文を用いて記述している。en(許可信号)が'1'の時のみ入力信号dを取り込む。 /* d_latch.sv */ module d_l…
組合わせ回路 SystemVerilogで簡単な組合わせ回路を記述してみる。 デコーダ デコーダ(decoder3to8.sv) 3入力8出力のデコーダの記述。SystemVerilogのalways_comb文+case文を使って処理を記述。入出力信号のデータ型はlogicとしている。出力信号に関してはr…
組合わせ回路 SystemVerilogで簡単な組合わせ回路を記述してみる。 論理ゲート 論理ゲート(logic_gates.sv) 基本的な論理ゲートの記述例。入出力ビット幅はパラメータで指定する。 /* logic_gates.sv */ module logic_gates #(parameter WIDTH=1) (input [WI…
Gitを使ってリモートリポジトリにプッシュすると、以下のエラーが出て怒られる。 [rejected] master -> master (fetch first) error: failed to push some refs to 'https://github.com/WakkyFree/binarycutter' hint: Updates were rejected because the re…