[過去ログ] Qiita 2 - キータぞ、来たぞ、キータだぞー (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
656
(4): 2023/01/28(土)14:54 ID:8J7/cVfu(1) AAS
ALU Controlを実装していてパタヘネRISC-V版の誤りに気づいた件
外部リンク:qiita.com
> Appendix C: Mapping Control to Hardware の C.2 Implementing Combinational Control Units の記載のFigure C.2.3が誤っていました.どのように訂正するかについては,前述のSystemVerilogのソースコードから察してください.

どう間違っててどう書くのが正しいみたいな具体的な指摘をしないのは
墓穴掘りたくないからかな
657: 2023/01/29(日)13:13 ID:V8aF3j6G(1/3) AAS
>>656
パタヘネのFigure C2.3のOperation0(alu_ctl[0])をそのままVerilogで書くと
alu_ctl[0] = (alu_op[1] & (f[3] & f[0]));
だけど
alu_ctl[0] = (alu_op[1] & (f[1] & ~f[0]));
が正しいと言いたいらしい

でも、Figure C.2.1の4行目は
省9
659: 2023/01/29(日)14:03 ID:V8aF3j6G(3/3) AAS
>>658
一応補足
> だとするとなんでinst[30]がいらないって発想になるんだろう?

inst[30]はf[3]ね

alu_ctl[0]が加算化減算化を区別する信号線ならinst[30]=f[3]がないといけないのに
>>656のコードはf[3]を取り除くコードにしていて、こんな書き換えようと思うこと自体
理解できないという意味
663: 2023/01/30(月)20:54 ID:r3bAOQsl(1/3) AAS
>>660
あ、見落としていた

パタヘネのFigure C.2.3をVerilogで書くとOperation2(alu_ctl[2])は
alu_ctl[2] = (alu_op[0] | (alu_op[1] & f[1]));
になっているのを、>>656のコードは
alu_ctl[2] = (alu_op[0] | (alu_op[1] & f[3]));
に修正している
省10
665: 2023/01/30(月)21:58 ID:r3bAOQsl(3/3) AAS
間違っているかもしれないけど、なんとなくわかった気がする

RISC-Vの条件分岐命令はPC相対で、rs1とrs2間で条件判定を行い、
PC+即値で分岐先アドレスを計算して分岐時に次のPCとしてセットする

パタヘネの設計では、条件判定をALUで行い、分岐先アドレスの計算は
ALUとは別の加算器を用意して使用する

普通の設計だと、分岐命令もロードストア命令もALUでアドレス計算して、
条件判定回路はALUとは別に用意する
省2
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.042s