瀏覽代碼

gerigerogegege

master
peteraa 6 年之前
父節點
當前提交
99c25f5a4c
共有 1 個文件被更改,包括 8 次插入22 次删除
  1. +8
    -22
      oppgavetekst.org

+ 8
- 22
oppgavetekst.org 查看文件

@@ -416,7 +416,7 @@
}
#+end_src
Hooray, now we get `scala.NotImplementedError: an implementation is missing`
Hooray, now we get ~scala.NotImplementedError: an implementation is missing~
as expected, along with an enormous stacktrace..

The observant reader may have observed that it is perfectly legal to put chisel types in scala
@@ -426,7 +426,7 @@
If it happens to contain values of chisel types then these will exist in the design, however the
collection will not, so we cannot index based on the collection.
This can be seen in `myIncrementN` where an array of incrementors is used.
This can be seen in ~myIncrementN~ where an array of incrementors is used.
The array is only used help the scala program wire the components together, and once this is
done the array is not used.
We could do the same with MyVector, but it's not pretty:
@@ -498,9 +498,7 @@
However, unlike the previous circuits, the simpleDelay circuit stores its value
in a register, causing a one cycle delay between input and output.
Lets test this

Lets try it!
#+begin_src scala
class DelaySpec extends FlatSpec with Matchers {
behavior of "SimpleDelay"
@@ -522,7 +520,7 @@
}
#+end_src
Lets test it
We then run the test:

#+begin_src
sbt:chisel-module-template> testOnly Ex0.DelaySpec
@@ -548,7 +546,6 @@
Oops, the tester doesn't advance the clock befor testing output, totally didn't
make an error on purpose to highlight that...

#+begin_src scala
class DelayTester(c: SimpleDelay) extends PeekPokeTester(c) {
for(ii <- 0 until 10){
@@ -577,22 +574,11 @@
???
}
#+end_src

This should answer the initial question of combinatorial vs stateful:
The output of a combinatorial circuit will be available instantly, while
a stateful circuit will only update its output during rising edges on the
clock.
Before you continue it is recommended that you check out the chisel3
tutorials.
In the basics.scala there is one more module, a basic selector.
At compile time this component builds n random numbers, to see which we can
cycle through them.
The component comes with a test, this test will be run when you do sbt.run
You should study this component. What is the difference between if/else and
when/otherwise?
Before you continue you should have a good grasp on the difference between scala and
chisel. For instance, what is the difference between ~=~ and ~:=~?
If ~a~ is the input for a module, and ~b~ is the output, should it be ~a := b~ or ~b := a~?

* Matrix matrix multiplication
When designing digital logic you should always start with decomposition.
Your first task is therefore to implement a dot product calculator, since


Loading…
取消
儲存