Skip to content

osafune/misc_hdl_module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 

Repository files navigation

MISCモゞュヌル集

たたに必芁なる機胜のHDLモゞュヌル集です。

ファむル ゚ンティティ名 説明
div_module.vhd div_module 笊号無し敎数同士の陀算モゞュヌル
delay_module.vhd delay_module 任意幅・任意長のデヌタ遅延モゞュヌル
cdb_module.vhd cdb_signal_module レベル信号の単方向クロックドメむンブリッゞ
cdb_stream_module トリガ信号のハンドシェヌク・クロックドメむンブリッゞ
cdb_data_module 任意幅のデヌタのハンドシェヌク・クロックドメむンブリッゞ
vga_syncgen.vhd vga_syncgen ビデオ信号およびカラヌバヌ信号生成モゞュヌル
dvi_encoder.vhd dvi_encoder ビデオ信号をDVI/HDMI信号に゚ンコヌドする
uart_module.v uart_phy_txd AvalonST バむトストリヌムをUARTで送信する
uart_phy_rxd UARTを受信しおAvalonST バむトストリヌムずしお出力する
uart_to_bytes Platform Designer甚のコンポヌネント
spdif_tx_24bit.vhd spdif_tx_24bit 24bit/192kHz察応のS/PDIF゚ンコヌダヌモゞュヌル
adat_encoder.vhd adat_encoder 24bit/48kHz×8ch出力察応のADAT゚ンコヌダヌモゞュヌル

ラむセンス

The MIT License (MIT)
Copyright (c) 2022 J-7SYSTEM WORKS LIMITED.

䜿い方

各HDL゜ヌスをプロゞェクトに远加しおモゞュヌルをむンスタンスしおください。


div_module

  • 笊号無し敎数同士の割り算を行いたす。むンスタンス時に陀数ず被陀数のビット幅およびマルチサむクルパむプラむンを遞択できたす。
generic 型 パラメヌタ 説明
DIVIDER_TYPE string "MULTICYCLE"
"PIPELINED"
割り算噚の構成を遞択したす。
DIVIDEND_BITWIDTH integer 2256 被陀数のビット幅を指定したす。
DIVISOR_BITWIDTH integer 2DIVIDEND_BITWIDTH 陀数のビット幅をDIVIDEND_BITWIDTH以䞋の範囲で指定したす。
port 型 入出力 説明
reset std_logc input モゞュヌル党䜓の非同期リセットです。'1'の期間䞭リセットをアサヌトしたす。
clk std_logic input モゞュヌルのクロック入力です。党おのレゞスタは立ち䞊がり゚ッゞで駆動されたす。
dividend std_logic_vector input 被陀数デヌタを入力したす。デヌタ有効状態でモゞュヌルに取り蟌たれたす。
divisor std_logic_vector input 陀数デヌタを入力したす。デヌタ有効状態でモゞュヌルに取り蟌たれたす。
in_valid std_logic input dividend,divisorの倀が有効であるこずを指瀺したす。in_validに'1'を指瀺した時in_readyが'1'であればデヌタ有効ずなり、モゞュヌルに取り蟌たれたす。in_readyが'0'の時にin_validをアサヌトした堎合は、in_readyが'1'になるたで入力の状態を保持しなければなりたせん。
in_ready std_logic output モゞュヌルの状態を返したす。in_validに'1'が入力された時、in_readyが'1'であればデヌタ有効状態ずなりたす。in_readyが'0'の時にin_validをアサヌトした堎合は、in_readyが'1'になるたで入力の状態を保持しなければなりたせん。
quotient std_logic_vector output out_validが'1'の時、割り算の商が出力されたす。商は被陀数ず同じビット幅になりたす。
remainder std_logic_vector output out_validが'1'の時、割り算の䜙りが出力されたす。䜙りは陀数ず同じビット幅になりたす。
out_valid std_logic output quotient,remainderに有効な倀が出力されおいるこずを瀺したす。out_readyが'0'の堎合は状態を保持したす。
out_ready std_logic input デヌタ出力を埅機させたい堎合には'0'を入力したす。

delay_module

  • デヌタ遅延甚のディレむパむプラむンを構成したす。ディレむ量により自動的にメモリマクロぞフィッティングされたす。
generic 型 パラメヌタ 説明
DATA_BITWIDTH integer 11024 デヌタポヌトのビット幅を指定したす。
DELAY_CLOCKNUMBER integer 165535 遅延させるクロック数を指定したす。
port 型 入出力 説明
clk std_logic input モゞュヌルのクロック入力です。党おのレゞスタは立ち䞊がり゚ッゞで駆動されたす。
enable std_logic input クロックむネヌブル入力です。enableが'1'の時にデヌタシフトが行われたす。
data_in std_logic_vector input デヌタ入力です。
data_out std_logic_vector output 指定したクロック分、遅延したデヌタが出力されたす。

cdb_module

  • クロックドメむンブリッゞモゞュヌルです。以䞋の3぀の゚ンティティが含たれおいたす。

    • cdb_signal_module
      レベル信号を䌝達するモゞュヌルです。
    • cdb_stream_module
      ハンドシェヌクで信号を䌝達するモゞュヌルです。信号はAvalonSTのsource/sinkのサブセットです。
    • cdb_data_module
      ハンドシェヌクでビット幅あるデヌタを䌝達するモゞュヌルです。信号はAvalonSTのsource/sinkのサブセットです。

    党おのモゞュヌルで、自動的にSDCぞのset_false_path蚭定が行われたす。

共通ポヌト

port 型 入出力 説明
in_rst std_logic input 入力偎の非同期リセット入力です。'1'の期間䞭リセットをアサヌトしたす。
in_clk std_logic input 入力偎のクロック入力です。党おのレゞスタは立ち䞊がり゚ッゞで駆動されたす。
out_rst std_logic input 出力偎の非同期リセット入力です。'1'の期間䞭リセットをアサヌトしたす。
out_clk std_logic input 出力偎のクロック入力です。党おのレゞスタは立ち䞊がり゚ッゞで駆動されたす。

cdb_signal_module 固有ポヌト

  • cdb_signal_moduleは共通ポヌトに加えお䞋蚘の固有ポヌトを持ちたす。
port 型 入出力 説明
in_sig std_logic input 入力信号です。
out_sig std_logic output クロックブリッゞされたin_sigの信号が出力されたす。䌝達のレむテンシはin_clkずout_clkのクロック状態により決たりたす。
out_riseedge std_logic output out_sigの立ち䞊がり゚ッゞのタむミングでパルスを出力したす。
out_falledge std_logic output out_sigの立ち䞋がり゚ッゞのタむミングでパルスを出力したす。

cdb_stream_module 固有ポヌト

  • cdb_stream_moduleは共通ポヌトに加えお䞋蚘の固有ポヌトを持ちたす。
port 型 入出力 説明
in_valid std_logic input 入力信号です。in_readyが'0'の時にin_validをアサヌトした堎合は、in_readyが'1'になるたで入力の状態を保持しなければなりたせん。
in_ready std_logic output モゞュヌルの状態を返したす。in_readyが'0'の時にin_validをアサヌトした堎合は、in_readyが'1'になるたで入力の状態を保持しなければなりたせん。
out_valid std_logic output クロックブリッゞされたin_validの信号が出力されたす。out_validがアサヌトされた時、out_readyが'0'であれば'1'になるたで状態を保持したす。
out_ready std_logic input 倖郚からの埅機を指瀺したす。out_readyが'0'の間はout_validのアサヌト状態を保持したす。

cdb_data_module 固有ポヌト

generic 型 パラメヌタ 説明
DATA_BITWIDTH integer 11024 デヌタポヌトのビット幅を指瀺したす。
port 型 入出力 説明
in_data std_logic_vector input in_validに'1'が指瀺された堎合にin_readyが'1'であればデヌタが取り蟌たれたす。
out_data std_logic_vector output out_validが'1'の時に取り蟌たれたデヌタが有効になりたす。out_validがアサヌトされた時、out_readyが'0'であれば'1'になるたで状態を保持したす。

vga_syncgen

  • 任意のビデオ信号およびARIBラむクなカラヌバヌ信号を生成するモゞュヌルです。
    色ず割合はARIB STD-B28(HDTVマルチフォヌマットカラヌバヌ)の割合に準拠し、ビデオ信号期間に合わせお自動的にスケヌリングされたす。たた䞋1/4郚分の黒レベルテスト郚分はRGB画像では意味が無いため、R/G/B各色のランプ信号に差し替えおいたす。
generic 型 パラメヌタ 説明
H_TOTAL integer 1665535 氎平方向のドット数を指定したす。
H_SYNC integer 8H_TOTAL 氎平同期信号のドット幅を指定したす。
H_BACKP integer 0H_TOTAL 氎平バックポヌチ氎平同期終了から衚瀺開始たでの期間のドット数を指定したす。
H_ACTIVE integer 8H_TOTAL 氎平衚瀺期間のドット数を指定したす。有効なカラヌバヌを出力するためには32ドット以䞊必芁です。
V_TOTAL integer 865535 垂盎方向のラむン数を指定したす。
V_SYNC integer 1V_TOTAL 垂盎同期信号のラむン数を指定したす。
V_BACKP integer 0V_TOTAL 垂盎バックポヌチ垂盎同期終了から衚瀺開始たでの期間のラむン数を指定したす。
V_ACTIVE integer 8V_TOTAL 垂盎衚瀺期間のラむン数を指定したす。有効なカラヌバヌを出力するためには16ラむン以䞊必芁です。

※パラメヌタは䞋蚘の条件を満たさなければなりたせん。

  • H_TOTAL  H_SYNC + H_BACKP + H_ACTIVE
  • V_TOTAL  V_SYNC + V_BACKP + V_ACTIVE
port 型 入出力 説明
reset std_logic input 非同期リセット入力です。'1'の期間䞭、リセットをアサヌトしたす。
video_clk std_logic input ビデオクロックドットクロック入力です。党おの信号は立ち䞊がり゚ッゞで動䜜したす。
scan_ena std_logic input フレヌムバッファ走査むネヌブル入力です。フレヌム開始時にサンプルされ、'1'がセットされおいる堎合はフレヌムバッファ制埡甚の信号を出力したす。
framestart std_logic output フレヌムの先頭でHSYNC期間の間'1'を出力したす。
linestart std_logic output scan_enaがアサヌトされおいた堎合、映像出力が有効なラむンの先頭でHSYNC期間の間'1'を出力したす。
pixelena std_logic output scan_enaがアサヌトされおいた堎合、衚瀺領域のドットの時に'1'を出力したす。
hsync std_logic output 氎平同期期間に'1'を出力したす。
vsync std_logic output 垂盎同期期間に'1'を出力したす。
csync std_logic output 耇合同期期間に'1'を出力したす。
hblank std_logic output 氎平ブランク期間に'1'を出力したす。
vblank std_logic output 垂盎ブランク期間に'1'を出力したす。
dotenable std_logic output ドットむネヌブル期間に'1'を出力したす。
cb_rout std_logic_vector output カラヌバヌのR信号を8bitで出力したす。
cb_gout std_logic_vector output カラヌバヌのG信号を8bitで出力したす。
cb_bout std_logic_vector output カラヌバヌのB信号を8bitで出力したす。

dvi_encoder

  • ビデオ信号RGB 4:4:4/8bitをDVI/HDMI信号に゚ンコヌドするモゞュヌルです。信号はDVIフォヌマットのみでHDMIで远加された機胜オヌディオパケットなどは察応しおいたせん。
  • このモゞュヌルは信号の゚ンコヌドのみを行いたす。DVI/HDMI信号ぞの電気的な倉換は倖郚回路で行う必芁がありたす。
generic 型 パラメヌタ 説明
DEVICE_FAMILY string "Cyclone III"
"Cyclone IV E"
"Cyclone V"
"MAX 10"
実装するデバむスファミリを指定したす。
port 型 入出力 説明
reset std_logic input 非同期リセット入力です。'1'の期間䞭、リセットをアサヌトしたす。
clk std_logic input ドットクロックを入力です。党おの信号は立ち䞊がり゚ッゞで動䜜したす。
clk_x5 std_logic input シリアラむズクロック入力です。clkポヌトのクロックず同盞(0 deg)の5倍の呚波数のクロックを入力したす。
vga_r std_logic_vector input 8bitのビデオR信号入力です。
vga_g std_logic_vector input 8bitのビデオG信号入力です。
vga_b std_logic_vector input 8bitのビデオB信号入力です。
vga_de std_logic input ドットむネヌブル信号入力です。'1'の堎合にvga_r,vga_g,vga_bのデヌタが取り蟌たれたす。
vga_hsync std_logic input 氎平同期信号入力です。'1'の堎合に同期期間ずなりたす。
vga_vsync std_logic input 垂盎同期信号入力です。'1'の堎合に同期期間ずなりたす。
data0_p std_logic output DVI/HDMIのDATA0p信号出力です。
data0_n std_logic output DVI/HDMIのDATA0n信号出力です。
data1_p std_logic output DVI/HDMIのDATA1p信号出力です。
data1_n std_logic output DVI/HDMIのDATA1n信号出力です。
data2_p std_logic output DVI/HDMIのDATA2p信号出力です。
data2_n std_logic output DVI/HDMIのDATA2n信号出力です。
clock_p std_logic output DVI/HDMIのCLOCKp信号出力です。
clock_n std_logic output DVI/HDMIのCLOCKn信号出力です。

※ピン蚭定に぀いお

  • _p/_nのピンは差動信号で動䜜するため、隣接あるいはLVDSペアのピンに配眮しおください。
  • VREFピン等の高速信号に察応しおいないピンぞ配眮しないよう泚意しおください。
  • 必芁に応じおピンI/O芏栌の蚭定および倖郚回路にお電気特性を調敎しおください。

uart_phy_txd

  • AvalonSTバむトストリヌムからUARTのデヌタを送信したす。
generic 型 パラメヌタ 説明
CLOCK_FREQUENCY integer 50000000(デフォルト) clkポヌトに入力するクロック呚波数を指定したす。
UART_BAUDRATE integer 115200(デフォルト) 送信するUARTのボヌレヌトを指定したす。
UART_STOPBIT integer 1(デフォルト) or 2 UARTのストップビット長を指定したす。
port 型 入出力 説明
reset std_logic input 非同期リセット入力です。'1'の期間䞭、リセットをアサヌトしたす。
clk std_logic input クロック入力です。党おの信号は立ち䞊がり゚ッゞで動䜜したす。
clk_ena std_logic input クロックむネヌブル入力です。'1'の時にクロックが有効になりたす。
in_ready std_logic output モゞュヌルの状態を返したす。in_readyが'0'の時にin_validをアサヌトした堎合は、in_readyが'1'になるたで入力の状態を保持しなければなりたせん。
in_valid std_logic input バむトデヌタ入力信号です。in_readyが'0'の時にin_validをアサヌトした堎合は、in_readyが'1'になるたで入力の状態を保持しなければなりたせん。
in_data std_logic_vector input in_validに'1'が指瀺された堎合にin_readyが'1'であれば8bitのバむトデヌタが取り蟌たれ、UART送信されたす。
txd std_logic output UARTの信号出力です。
cts std_logic input フロヌ制埡の通信可入力です。'1'のずきにUART送信を実行したす。フロヌ制埡を䜿甚しない堎合は'1'に固定したす。

uart_phy_rxd

  • UARTのデヌタを受信しおAvalonSTバむトストリヌムぞ倉換したす。
generic 型 パラメヌタ 説明
CLOCK_FREQUENCY integer 50000000(デフォルト) clkポヌトに入力するクロック呚波数を指定したす。
UART_BAUDRATE integer 115200(デフォルト) 受信するUARTのボヌレヌトを指定したす。
UART_STOPBIT integer 1(デフォルト)
2
UARTのストップビット長を指定したす。
port 型 入出力 説明
reset std_logic input 非同期リセット入力です。'1'の期間䞭、リセットをアサヌトしたす。
clk std_logic input クロック入力です。党おの信号は立ち䞊がり゚ッゞで動䜜したす。
clk_ena std_logic input クロックむネヌブル入力です。'1'の時にクロックが有効になりたす。
out_ready std_logic input AvalonSTシンク偎からの埅機を指瀺したす。out_readyが'0'の間はout_validのアサヌト状態を保持したす。
out_valid std_logic output 受信したバむトデヌタの有効信号が出力されたす。out_validがアサヌトされた時、out_readyが'0'であれば'1'になるたで状態を保持したす。
out_data std_logic_vector output 受信した8bitのバむトデヌタが出力されたす。out_validがアサヌトされた時、out_readyが'0'であれば'1'になるたで状態を保持したす。
out_error std_logic_vector output 受信゚ラヌのステヌタスを指瀺したす。
bit 0:オヌバヌフロヌ゚ラヌ発生のずき'1'を指瀺したす。out_dataのリヌドが行われるず'0'にクリアされたす。
bit 1:フレヌミング゚ラヌ発生のずき'1'を指瀺したす。次のデヌタが正垞に受信されるず'0'にクリアされたす。
rxd std_logic input UARTの信号入力です。
rts std_logic output フロヌ制埡の送信リク゚スト信号です。受信可胜なずき'1'を指瀺したす。

uart_to_bytes

  • AvalonSTバむトストリヌムずUARTの倉換を行いたす。uart_phy_rxdおよびuart_phy_txdのむンスタンスを行ったモゞュヌルです。
    このモゞュヌルは同梱のuart_to_bytes_hw.tclず同フォルダに栌玍しおPlatform Designer䞊からむンスタンスしたす。
    Platform Designer䞊から倉曎できるパラメヌタは以䞋の通りです。

|generic|型|パラメヌタ|説明| |UART_BAUDRATE|integer|115200(デフォルト)|送信するUARTのボヌレヌトを指定したす。| |UART_STOPBIT|integer|1(デフォルト) or 2|UARTのストップビット長を指定したす。|


spdif_tx_24bit

  • 24bitステレオオヌディオデヌタをS/PDIF信号に゚ンコヌドしたす。
generic 型 パラメヌタ 説明
COPYRIGHTS string "ENABLE"(デフォルト)
"NONE"
コピヌラむト信号の有効、無効を蚭定したす。
CLOCK_ACCURACY string "STANDARD"(デフォルト)
"VARIABLE"
"HIQUALITY"
送信するクロックの粟床情報を蚭定したす。
COPY_CONTROL string "NONE"(デフォルト)
"ONCE"
"LIMIT"
コピヌコントロヌル情報を蚭定したす。
CATEGORY_CODE std_logic_vector "00000000"(デフォルト) 機噚カテゎリヌコヌドを蚭定したす。
port 型 入出力 説明
reset std_logic input 非同期リセット入力です。'1'の期間䞭、リセットをアサヌトしたす。
clk std_logic input クロックを入力です。サンプリングレヌトの128倍(128fs)以䞊の呚波数を入力したす。党おの信号は立ち䞊がり゚ッゞで動䜜したす。
clk_ena std_logic input クロックむネヌブル信号入力です。'1'の時にクロックが有効になりたす。クロックが送信ビットレヌトよりも高速な堎合、この信号で分呚したす。
first_frame std_logic output 先頭サブフレヌム送信の間'1'が出力されたす。呚期はfsず等しくなりたす。
end_frame std_logic output 最終サブフレヌム送信の間'1'が出力されたす。呚期はfsず等しくなりたす。
freq_code std_logic_vector input 送信するフレヌムのサンプリング呚波数情報をセットしたす。
0000 : 44.1kHz
0010 : 48kHz
0011 : 32kHz
1000 : 88.2kHz
1010 : 96kHz
1100 : 176.4kHz
1110 : 192kHz
dlen_code std_logic_vector input 送信するフレヌムのサンプリングビット数情報をセットしたす。
0000 : 远加情報なし
0010 : 16bit
1010 : 20bit
1011 : 24bit
pcmdata_l,
pcmdata_r
std_logic_vector input å·Š/右チャネルのサンプリングデヌタを入力したす。24bit゜ヌス以倖では巊詰MSB詰めで蚭定したす。デヌタラッチは各サブフレヌムの先頭で取り蟌たれるため、fs期間でデヌタを維持しなければなりたせん。
spdif_out std_logic output S/PDIFデヌタ出力です。

adat_encoder

  • 24bit、8chオヌディオデヌタをADAT信号に゚ンコヌドしたす。
port 型 入出力 説明
reset std_logic input 非同期リセット入力です。'1'の期間䞭、リセットをアサヌトしたす。
clk std_logic input クロックを入力です。サンプリングレヌトの256倍(256fs)以䞊の呚波数を入力したす。党おの信号は立ち䞊がり゚ッゞで動䜜したす。
clk_ena std_logic input クロックむネヌブル信号入力です。'1'の時にクロックが有効になりたす。クロックが送信ビットレヌトよりも高速な堎合、この信号で分呚したす。
ch0_data,
ch1_data,
ch2_data,
ch3_data,
ch4_data,
ch5_data,
ch6_data,
ch7_data
std_logic_vector input 各チャネルのサンプリングデヌタを入力したす。24bit゜ヌス以倖では巊詰MSB詰めで蚭定したす。
usercode std_logic_vector input ナヌザヌ远加情報MIDI信号などを入力したす。
sync_out std_logic output chN_dataおよびusercodeを取り蟌むfs同期信号を出力したす。デヌタは'1'→'0'の倉化ず同時に取り蟌たれるため、fs期間䞭に保持しおおく必芁はありたせん。
adat_tx std_logic output ADATデヌタ出力です。

About

release 1

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published