Re: [問題] Verilog

看板Electronics作者 (不如歸去)時間14年前 (2010/03/21 18:24), 編輯推噓2(2013)
留言15則, 4人參與, 5年前最新討論串3/3 (看更多)
※ 引述《CompileUltra (超強合成器)》之銘言: : 沒啥不妥阿 : 但是 state_1 clk1 沒被用到 這是要幹麻 想被我化簡掉嗎 =.= : 哪種filter有點忘了 orz 有勞原po說明 是 interpolation filter; CIC_FILTER: (1-z^-8)^3 / (1-z^-1)^3 clk 是 4 倍 x_in 輸入速度 (共用加法器的關係), clk1 是 4倍 clk 速度, 一樣是共用 加法器的關係 : ※ 引述《magician1 (不如歸去)》之銘言: module adder_25b(a,b,c); input [24:0] a; input [24:0] b; output [24:0] c; assign c = a + b; endmodule : : : endmodule : : module CIC_FILTER(v_in, v_out, clk, clk1, reset); : : input [15:0] v_in; : : output reg [15:0] v_out; : : reg [24:0] x_tap[5:0]; : : reg [24:0] y_tap[2:0]; : : reg [24:0] tmp; : : reg [24:0] tmp_1; : : wire [24:0] tmp_out; : : reg [24:0] tmp_2; : : reg [24:0] tmp_3; : : wire [24:0] tmp_out1; : : reg [1:0] state; : : reg [1:0] state_1; : : reg [24:0] x_tmp_2; : : wire [24:0] x_in; : : sub_25b s0(.a(tmp), .b(tmp_1), .c(tmp_out)); adder_25b s1(.a(tmp_2), .b(tmp_3), .c(tmp_out1)); : : assign x_in = {{9{v_in[15]}}, v_in[15:0]}; : : always @(negedge clk or negedge reset) begin : : if(!reset) begin : : state[1:0] <= 2'b0; : : end : : else begin : : state[1:0] <= state[1:0] + 1; : : end : : end : : always @(negedge clk1 or negedge reset) begin : : if(!reset) begin : : state_1[1:0] <= 2'b0; : : end : : else begin : : state_1[1:0] <= state_1[1:0] + 1; : : end : : end : : always @(negedge clk or negedge reset) begin : : if(!reset) begin : : x_tap[0] <= 0; : : x_tap[1] <= 0; : : x_tap[2] <= 0; : : x_tap[3] <= 0; : : x_tap[4] <= 0; : : x_tap[5] <= 0; : : tmp <= 0; : : tmp_1 <= 0; : : end : : else begin : : case(state[1:0]) : : 2'b00: begin : : tmp <= x_in; : : tmp_1 <= x_tap[1]; : : end : : 2'b01: begin : : tmp <= tmp_out; : : tmp_1 <= x_tap[3]; : : x_tap[2] <= tmp_out; : : x_tap[3] <= x_tap[2]; : : end : : 2'b10: begin : : tmp <= tmp_out; : : tmp_1 <= x_tap[5]; : : x_tap[4] <= tmp_out; : : x_tap[5] <= x_tap[4]; : : end : : 2'b11: begin : : x_tmp_2 <= tmp_out; : : x_tap[0] <= x_in; : : x_tap[1] <= x_tap[0]; : : end : : endcase : : end : : end always @(negedge clk1 or negedge reset) begin if(!reset) begin y_tap[0] <= 0; y_tap[1] <= 0; y_tap[2] <= 0; tmp_2 <= 0; tmp_3 <= 0; end else begin case(state_1) 2'b00: begin tmp_2 <= x_tmp_2; tmp_3 <= y_tap[0]; end 2'b01: begin tmp_2 <= tmp_out1; tmp_3 <= y_tap[1]; y_tap[0] <= tmp_out1; end 2'b10: begin tmp_2 <= tmp_out1; tmp_3 <= y_tap[2]; y_tap[1] <= tmp_out1; end 2'b11: begin v_out <= tmp_out1[24:9]; y_tap[2] <= tmp_out1; end endcase end end : : endmodule : : 請問 這些寫法 有哪裡不妥嗎 謝謝 現在的問題是 實際上IC 結果 輸出都為 0, 但從post sim 與 FPGA 結果都很正常 實在不得其解 想先從 RTL code style 看是否有違一般的規則; -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.49.101 ※ 編輯: magician1 來自: 115.43.49.101 (03/21 18:30) ※ 編輯: magician1 來自: 115.43.49.101 (03/21 18:31)

03/21 19:31, , 1F
要不要先檢查clk跟reset的輸入是不是你要的狀態呢...?
03/21 19:31, 1F
※ 編輯: magician1 來自: 115.43.49.101 (03/21 20:14) ※ 編輯: magician1 來自: 115.43.49.101 (03/21 20:16) ※ 編輯: magician1 來自: 115.43.49.101 (03/21 20:17)

03/21 22:56, , 2F
實際IC? 這是晶片量測結果?
03/21 22:56, 2F

03/21 22:57, , 3F
還有你的post sim 是post-synthesis sim還是post-layout sim
03/21 22:57, 3F

03/21 22:58, , 4F
語法上的話 你最後一個always block中的case 2'b11
03/21 22:58, 4F

03/21 23:00, , 5F
冒出一個v_out的assignment 然而這個flip-flop卻沒有被reset
03/21 23:00, 5F

03/21 23:01, , 6F
不曉得這是不是你想要問的?
03/21 23:01, 6F

03/22 00:24, , 7F
先檢查clk reset v_in, code看起來沒大問題 不知道你當初FPGA
03/22 00:24, 7F

03/22 00:25, , 8F
環境是怎樣 盡量把相同的環境移植到晶片上 都不行的話檢查
03/22 00:25, 8F

03/22 00:27, , 9F
layout看有沒有pin/port/net short或floating 不然切成reset
03/22 00:27, 9F

03/22 00:28, , 10F
看VDD power有沒有過大的電流 檢查晶片有沒有短路 差不多這
03/22 00:28, 10F

03/22 00:28, , 11F
些給原po參考 祝你好運
03/22 00:28, 11F

08/13 18:57, , 12F
先檢查clk rese https://muxiv.com
08/13 18:57, 12F

09/17 22:52, , 13F
先檢查clk rese https://daxiv.com
09/17 22:52, 13F

11/11 15:44, , 14F
看VDD power有 https://muxiv.com
11/11 15:44, 14F

01/04 22:08, 5年前 , 15F
layout看有沒有p https://muxiv.com
01/04 22:08, 15F
文章代碼(AID): #1BfVF1Kd (Electronics)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
問題
-2
3
問題
2
15
文章代碼(AID): #1BfVF1Kd (Electronics)