MicroZed Chronicles リスト http://adiuvoengineering.com/?page_id=285
@ Adam Taylor blog
https://forums.xilinx.com/t5/Xcell-Daily-Blog/The-Zynq-PS-PL-Part-Four-Adam-Taylor-s-MicroZed-Chronicles-Part/ba-p/428548
For this example, I am going to introduce use the first register as a control register. Specific bits in this register define whether the contents of registers 2 and 3 are to be added, subtracted, or multiplied together. The result of the operation will be stored in the fourth register. We make the fourth register read-only with respect to the microprocessor to ensure that the microprocessor cannot corrupt the results. In addition, the peripheral will be able to generate an interrupt if enabled by the control register.
上記の書いていることを実際にどこで実行しているかVHDLが理解していないのでソースを読んでも今は分からない。
また、blogに書いているs00_axi_aclkのPROCESSというのもblogの記載(画像)と、そこに掲載しているソースの記載(下記)も乖離している。
PROCESS(s00_axi_aclk)
BEGIN
IF rising_edge(s00_axi_aclk) THEN
squared <= signed( '0'& reg1(15 DOWNTO 0)) * signed('0'& reg1(15 DOWNTO 0));
cx2 <= (squared * c);
bx <= (signed('0'& reg1(15 DOWNTO 0))* b);
res_int <= a + cx2(48 DOWNTO 32) + ("000"& bx(32 DOWNTO 19));
result(15 downto 0) <= std_logic_vector(res_int(res_int'high -1 DOWNTO 0));
END IF;
END PROCESS;
blogの画像ではresult(31 downto 16)にも値をセットしているようだが、上記でセットしているのはresult(15 downto 0)のみ。
あとでソースだけ変更したのかもしれない。