
[code]

    {VGA_R, VGA_G, VGA_B} <=  { {4{rgb_1[2]}}, {4{rgb_1[1]}}, {4{rgb_1[0]}} };
    
[/code]

この式なのですが、理解できなくて  
ご教授いただけると助かります。


CC BY-SA 4.0
2019-12-21T08:02:27.693
61640
2020-08-08T03:03:31.423
2019-12-21T08:04:37.670
29826
37149
question
verilog
コードが理解できない


検索すると、この書籍の85ページに書かれている内容の断片のようですね。  
[FPGAプログラミング大全 Xilinx編](https://www.shuwasystem.co.jp/book/9784798047539.html)

>
[code]

>     always @( posedge PCK ) begin
>         if ( RST )
>             {VGA_R, VGA_G, VGA_B} <= 12'h000;
>         else if ( disp_enable )
>             {VGA_R, VGA_G, VGA_B} <=
>                         { {4{rgb_1[2]}}, {4{rgb_1[1]}}, {4{rgb_1[0]}} };
>         else
>             {VGA_R, VGA_G, VGA_B} <= 12'h000;
>     end
>  
[/code]

次のページに少し書かれている以下の内容が関わってくるのではないでしょうか？

> 最終的に3ビットの各ビットを4ビットに拡張してVGA_R～VGA_Bの信号を作成しています。

プログラムとか断片情報だけがあって、その内容がわからないなら、書籍を購読してみるのが良いでしょう。

* * *

「式の説明がない」と言っても、この1行はデータの代入とか送出のようなので、上記引用した記述と、その前後を合わせた文章で行われていると考えて良いのでは？

80ページ「図2-27 パターン表示回路のブロック図」の`pattern`,`syncgen`の構造と、82ページ「リスト2-5
同期信号作成回路(syncgen.v)」冒頭の`module syncgen`定義、84ページ「リスト2-7
パターン表示回路(pattern.v)」冒頭の`module
pattern`定義などに注意しながら、85～86ページのソースコードと説明文章を読めば、理解が進むでしょう。

直前の吹き出し説明付きで行われているパターンデータ(色情報)計算の内容と、それに対して書かれている文章が合っているので、引用した説明行と質問の式が合っているだろうと推測されます。


CC BY-SA 4.0
2019-12-21T08:42:58.940
61643
2019-12-21T10:21:46.850
2019-12-21T10:21:46.850
26370
26370
61640
answer


以下のverilog記述と等価です。

[code]

    VGA_R <= {rgb_1[2], rgb_1[2], rgb_1[2], rgb_1[2]};
    VGA_G <= {rgb_1[1], rgb_1[1], rgb_1[1], rgb_1[1]};
    VGA_B <= {rgb_1[0], rgb_1[0], rgb_1[0], rgb_1[0]};
    
[/code]

VGA_R/G/B、この三つの信号の幅は4ビット以上はずです。

`{}`は連接演算子で、`{VGA_R, VGA_G,
VGA_B}`では左は`VGA_R`、右は`VGA_B`その順で合計12ビットの信号としてまとめて取り扱っています。

`{4{rgb_1[2]}}`は`{rgb_1[2], rgb_1[2], rgb_1[2],
rgb_1[2]}`の略で、四つの`rgb_1[2]`という意味です。


CC BY-SA 4.0
2020-08-08T03:03:31.423
69353
2020-08-08T03:03:31.423
41425
61640
answer