verilog

    0熱度

    1回答

    我有一個組合代碼,在該代碼中,我想在1個時鐘週期之後關閉一個信號,即最初爲1,並且在一個時鐘週期它應該是0.有什麼辦法可以做到這一點,如果可能的話,它應該能夠在FPGA上進行合成。 的代碼如下: [email protected](ao or bo or co or dod or eo or fo or go or ho) begin temp_out = {ho,go,fo,

    1熱度

    1回答

    對於一個reg陣列,我希望計算他們最大連續的。 例如 reg [15:0] bit_array; bit_array = 16'b1001_1111_1100_0100; 結果應該是7 如果我想要做一個256位,甚至更長REG陣列同樣的事情, 有沒有什麼辦法來實現它在一個或幾個週期? (1GHz的16nm厚FF +) 編輯1: 真正的問題是,我想找到的最大的連續可用內存大小。 16位寄存器陣

    0熱度

    1回答

    這是Verilog上的兩種類型的半加器定義。 它們之間有區別嗎?我應該選擇哪一個?爲什麼? halfAdder1 xor(s,x1,x2); and(c,x1,x2); halfAdder2 assign s=x1^x2; assign c=x1&x2;

    -2熱度

    1回答

    我的代碼是一個順序結構,8個常量抽頭,8位FIR。我使用了一個內存來保存所有的輸入*水龍頭,但是我一直在嘗試保存這些乘法運算時遇到錯誤。 我在Modelsim上編譯它,得到了「語法錯誤」。之後,我嘗試了iverilog,並得到了「語法錯誤」和「錯誤:無效的模塊實例化」。我覺得我錯過了一些非常明顯但卻無法解決的問題。 代碼去如下: /* Código de um filtro FIR 8 taps,

    -1熱度

    1回答

    我寫這樣的代碼: module alu(input[7:0] a,input[7:0] b,input [2:0] op,output reg [7:0] y); [email protected](a or b or op) begin case(op) 3'b000: y = a + b; 3'b001: y = a - b; 3'b010: y = a *

    0熱度

    1回答

    我已經以Verilog設計的ALU: module ALU ( output reg overflow_16_1, // overflow flag used for 16 bit addition and subtraction output reg overflow_16_2, // overflow flag used for 16 bit addition and subtraction

    0熱度

    1回答

    我有一個文本文件(verilog),其中包含我想要修改的某些字符串序列(轉義標識符)。在下面的示例中,我想查找以'\'開頭並以''結尾的任何組(任何可打印的字符都可以介於兩者之間)。找到符合此標準的組後,我想用字母數字字符替換所有非字母數字字符(我並不在乎它們將替換的字母數字)。 In[1]: here i$ \$0me text to \m*dify Out[1]: here i$ aame

    -1熱度

    2回答

    如何使用更精簡的代碼將多個reg分配給相同的值?這是我想提高代碼: a = 0; b = 0; c = 0; d = 0; e = 0;

    0熱度

    1回答

    我假設在串聯的最左側放置一個未基礎的未定義字面量時,將只填寫給定值的任何缺失位。我沒有在LRM中看到任何明確的說明。 logic [63:0] rd_data; logic [31:0] mem_dout; logic [15:0] op_data; .... assign rd_data = {'0, op_data, mem_dout}; 顯然,下面將非法: 編輯:@ dave_5

    2熱度

    1回答

    別名寫入一個reg的位域我有一個寄存器:在DOUT位 reg [7:0] dout; //output of memory bus 組表示類似的有意義的事: DOUT [2:0]是一個狀態 DOUT [3]是一個標誌 DOUT [7:4]是一些數據 我想從always語句中讀取和寫入該寄存器dout。我想用這些標籤來解決它。 這個例子傳達我的嘗試: reg [7:0] dout; //outp