2013-08-07 70 views
-1

我有一行verilog代碼,我上網了,我不明白它的意思。一行verilog代碼

rom_data <= #`DEL {rom[rom_addr+3],rom[rom_addr+2],rom[rom_addr+1],rom[rom_addr]}; 

有人能幫我揭穿這個嗎?

回答

5

其分解:

1 rom_data <= 
2 #`DEL 
3 {rom[rom_addr+3], rom[rom_addr+2], rom[rom_addr+1], rom[rom_addr]}; 
  1. 非阻塞分配rom_data,裏面[email protected](posedge clk)可能用來暗示觸發器

  2. 延遲一些東西一樣設置:

    `define DEL「1ms」

    1ms或其他值被粘貼在你有'DEL'的地方。

  3. {}意味着連接,它採用rom [rom_addr]和接下來的3個值。

    即{2'b00,2'b01,2'b10,爲2'b11} => 8'b00_01_10_11

總之你有rom_addr在特定位置處指向。當rom_data更改時,將採用接下來的4個值,從rom_addrrom_addr + 3,並在DEL延遲後將它們分配到rom_data

+0

下面是一個在[EDA遊樂場](http://www.edaplayground.com/s/4/46)匹配@ Morgan的解釋的實例, –