logic-circuit-design / report01 / report01.typ
report01.typ
Raw
#import "../template.typ": *

#show: report.with()

#show: reportTop.with(
  title: "論理回路設計 第1回レポート課題",
  submit-date: "2024/10/21",
)

1. 以下の原始多項式について次の問に答えよ。

$
  x^4 + x^3 + 1
$

#grid(
  columns: (auto, auto),
  gutter: 10pt,
  [
    #enum(
      numbering: "(1)",
      [
        $1 slash 11001$のmod2除算は右より \
        $0.accent(0, dot)0011110101100accent(1, dot)$となる。よって得られるM系列は
        $
          {000111101011001}
        $
        である。今回、被除数の"11001"は5bitであるため周期の最大値は
        $
          2^4 - 1 = 15
        $
        となる。これは求まったM系列の周期と一致するため、最長のものである。
      ],
      [
        $
          C(x) / a(x) &= 1 / (x^4 + x^3 + 1) = x^(-4) / (x^(-4) + x^(-1) + 1) \
          therefore C(x) &= {a(x) + C(x)}x^(-4) + C(x)x^(-1) \
          &= [{a(x) + C(x)}x^(-3) + C(x)]x^(-1)
        $
        よって求めるブロック図は下図である。
      ],
    )
  ],
  [
    #grid(
      columns: 45, rows: 20,
      column-gutter: 1pt, row-gutter: 4pt,
      ..(grid.cell(y: 0)[],) * 6,
      .."0.000111101011001000111".codepoints().map(grid.cell.with(y: 0)),
      grid.cell(colspan: 3, y: 0, [...]),
      ..(grid.cell(y: 0)[\u{2002}],) * 12,
      grid.hline(y: 1, start: 5),
      .."11001)".codepoints().map(grid.cell.with(y: 1)),
      .."1.000".codepoints().map(grid.cell.with(y: 1)),
      grid.cell(colspan: 3, y: 1, [...]),
      ..(grid.cell(y: 2)[],) * 6,
      .."1 1001".codepoints().map(grid.cell.with(y: 2)),
      grid.hline(y: 3, start: 6, end: 12),
      ..(grid.cell(y: 3)[],) * 8,
      .."10010".codepoints().map(grid.cell.with(y: 3)),
      grid.cell(colspan: 6, y: 3, align: right, [(9)]),
      ..(grid.cell(y: 4)[],) * 8,
      .."11001".codepoints().map(grid.cell.with(y: 4)),
      grid.hline(y: 5, start: 8, end: 13),
      ..(grid.cell(y: 5)[],) * 9,
      .."10110".codepoints().map(grid.cell.with(y: 5)),
      grid.cell(colspan: 7, y: 5, align: right, [(11)]),
      ..(grid.cell(y: 6)[],) * 9,
      .."11001".codepoints().map(grid.cell.with(y: 6)),
      grid.hline(y: 7, start: 9, end: 14),
      ..(grid.cell(y: 7)[],) * 10,
      .."11110".codepoints().map(grid.cell.with(y: 7)),
      grid.cell(colspan: 7, y: 7, align: right, [(15)]),
      ..(grid.cell(y: 8)[],) * 10,
      .."11001".codepoints().map(grid.cell.with(y: 8)),
      grid.hline(y: 9, start: 10, end: 15),
      ..(grid.cell(y: 9)[],) * 12,
      .."11100".codepoints().map(grid.cell.with(y: 9)),
      grid.cell(colspan: 10, y: 9, align: right, [(7),(14)]),
      ..(grid.cell(y: 10)[],) * 12,
      .."11001".codepoints().map(grid.cell.with(y: 10)),
      grid.hline(y: 11, start: 12, end: 17),
      ..(grid.cell(y: 11)[],) * 14,
      .."10100".codepoints().map(grid.cell.with(y: 11)),
      grid.cell(colspan: 10, y: 11, align: right, [(5),(10)]),
      ..(grid.cell(y: 12)[],) * 14,
      .."11001".codepoints().map(grid.cell.with(y: 12)),
      grid.hline(y: 13, start: 14, end: 19),
      ..(grid.cell(y: 13)[],) * 15,
      .."11010".codepoints().map(grid.cell.with(y: 13)),
      grid.cell(colspan: 7, y: 13, align: right, [(13)]),
      ..(grid.cell(y: 14)[],) * 15,
      .."11001".codepoints().map(grid.cell.with(y: 14)),
      grid.hline(y: 15, start: 15, end: 20),
      ..(grid.cell(y: 15)[],) * 18,
      .."11000".codepoints().map(grid.cell.with(y: 15)),
      grid.cell(colspan: 15, y: 15, align: right, [(3),(6),(12)]),
      ..(grid.cell(y: 16)[],) * 18,
      .."11001".codepoints().map(grid.cell.with(y: 16)),
      grid.hline(y: 17, start: 18, end: 23),
      ..(grid.cell(y: 17)[],) * 22,
      .."10000".codepoints().map(grid.cell.with(y: 17)),
      grid.cell(colspan: 16, y: 17, align: right, [(1),(2),(4),(8)]),
      ..(grid.cell(y: 18)[],) * 22,
      .."11001".codepoints().map(grid.cell.with(y: 18)),
      grid.hline(y: 19, start: 22, end: 27),
      ..(grid.cell(y: 19)[],) * 23,
      .."1001".codepoints().map(grid.cell.with(y: 19)),
      grid.cell(colspan: 7, y: 19, align: right, [(9)]),
      grid.cell(colspan: 45, y: 20, align: right, [以下繰り返し]),
    )
  ],
)

#figure(
  image("./draws/1_2_block.svg", width: 14cm),
  caption: "除算ブロック図",
)

#enum(
  numbering: "(1)",
  start: 3,
  [
    #figure(
      image("./draws/1_3_circuit.svg"),
      caption: "論理回路",
    )
  ],
  [
    #rotate(90deg, reflow: true)[
      #figure(
        [
          $
            C L K: & signals("0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0") \
            a(x): & signals("0|1.|0.......................................") \
            D_0: & signals("0|1.|0.....|1.......|0.|1.|0.|1...|0...|1.|0.....|1...") \
            Q_0: & signals("0..|1.|0.....|1.......|0.|1.|0.|1...|0...|1.|0.....|1.") \
            Q_1: & signals("0....|1.|0.....|1.......|0.|1.|0.|1...|0...|1.|0.....") \
            Q_2: & signals("0......|1.|0.....|1.......|0.|1.|0.|1...|0...|1.|0...") \
            D_3: & signals("0......|1.......|0.|1.|0.|1...|0...|1.|0.....|1.....") \
            Q_3: & signals("0........|1.......|0.|1.|0.|1...|0...|1.|0.....|1...")
          $
        ],
        caption: "タイミングチャート",
      )
    ]
  ],
)