[問題] 把D-latch寫成Verilog HDL上傳到FPGA板 …

看板Electronics作者 (雨四光)時間17年前 (2009/03/25 22:43), 編輯推噓9(10116)
留言27則, 11人參與, 7年前最新討論串1/1
先講一下,這是「我的作業」 如果不是我已經問過各種人,我絕對不會po來問orz 還有因為是作業,別把答案寫出來,幫我找出錯誤就好了。萬分感謝! 題目是要用verilog寫出D-latch 其中一種要求用RTL寫出來, 另外一種要使用GateLevel的方法。 RTL很順利的完成了,沒想到GateLevel卻發生錯誤。 圖長這樣 http://img172.imageshack.us/img172/5476/dlatch.jpg
//code如下 module ex1_struct(D,C,CLR,PRS,Q,Qp); input D,C,CLR,PRS; output Q,Qp; wire w1,w2; wire D_not,C_not,CLR_not,PRS_not; not (D_not,D), (C_not,C), (CLR_not,CLR), (PRS_not,PRS); and (w1,D_not,C_not), (w2,D,C_not); nor (Q,w1,Qp,CLR_not), (Qp,w2,Q,PRS_not); endmodule // 這裡先說明一下,為什麼我要把C,CLR,PRS統統not 因為這個按鈕按下去是0,不按是1……我是覺得有點奇怪啦,違反直觀。 我是用xilinx,沒有語法錯誤,錯的是map一欄。 錯誤訊息如下: ERROR:MapLib:661 - LUT4 symbol "Q1" (output signal=Q_OBUF) has input signal "Qp_or0000" which will be trimmed. See the trim report for details about why the input signal will become undriven. ERROR:MapLib:820 - LUT4 symbol "Q1" (output signal=Q_OBUF) has an equation that uses input pin I1, which no longer has a connected signal. Please ensure that all the pins used in the equation for this LUT have signals that are not trimmed (see trim report for details on which signals were trimmed). 看的不是很懂, 我沒有設Q1也沒有設Q_OBUF這些,應該是程式自己生出來的。 本來想說是不是nor只能有兩個input(很少寫GateLevel,不是很熟) 發現把最後nor的CLR_not或PRS_not拿掉其中一個,就給過了呢 不過指拿掉一個,另一個nor還是有3個input啊 顯然問題不在這。 -- 儘管生命的起源只是一種化學反應 儘管人類的存在只是記憶數據的影子 儘管靈魂並不存在,精神只是神經細胞的火花    儘管世上沒有神,人一定要靠一己之力在這殘酷的世界中掙扎求存   我還是...... 我還是...... 要以意識之名命令你───「活下去」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.216.126 -- 順便打一下自介 我是清大EE學生,一年級。 覺得FPGA板子還滿好玩的,不過有點破爛(老是上傳失敗) 私以為GATELEVEL這種東西,應該要趕快丟掉! 用像C的語法去寫不是很快樂嘛! 看在明天要考微積分和計網概的放上,這題就先擱著了。 雖然說已經花了好幾小時trace code…… ※ 編輯: henry666666 來自: 140.114.216.126 (03/25 22:48) ※ 編輯: henry666666 來自: 140.114.216.126 (03/25 23:11)

03/26 00:21, , 1F
推牧師
03/26 00:21, 1F

03/26 00:31, , 2F
nor只能有兩個input,要三個的請去用三個input的cell
03/26 00:31, 2F

03/26 00:33, , 3F
四夫是syn不出來 邏輯化減一下成兩個input的吧~
03/26 00:33, 3F
可是啊,把其中一個(比如說CLR_not)拿掉, 另一邊的nor還是有三個input, 這樣卻會過,是為什麼呢? 而且我覺得如果只能input兩個,應該在語法就抓到錯誤了? or可以用3個,來改改看好了 加個inverter …… 過了,真的假的XD 不過這樣寫法有點累贅呢 不過把其中一個拿掉可以過的疑惑還是在? 我翻了一下課本,的確是有nor前面有三個input的圖就是。 ※ 編輯: henry666666 來自: 140.114.216.126 (03/26 01:09)

03/26 14:59, , 4F
這我一年級也做過,不過我是三個inp,"虛"你課本沒看熟
03/26 14:59, 4F

03/26 15:01, , 5F
nor只能有有2個inp 所以你好像前面沒看熟...我也是資科的
03/26 15:01, 5F

03/26 16:37, , 6F
有什麼好噓的
03/26 16:37, 6F
不是很懂,讓我再問一下 nor只能有兩個input是指 A.在模擬的時候nor只能有兩個input? B.電路在實做的時候只能有兩個input? 因為我課本上寫: 一張圖 是一個or gate前面有bubble這種 是nor沒錯吧? (旁邊還畫有一個用Invert-AND的) 下面寫(a)OR-invert 接著寫 Two grahic symbols for the NOR gate 然後他的圖有三個input:x、y、z 然後旁邊寫了(x+y+z)' 對了,有人回信說, 為什麼我加了inverter之後就過了 是因為當PRS和CLR同時按下時,軟體會不知道怎麼跑 一邊有加,一邊沒有加的時候會有delay解決這個問題 不過我其實兩邊都有加inverter…… http://rafb.net/p/lmZo0U77.html 這是改過的程式碼 最後,感謝大家的回答XD ※ 編輯: henry666666 來自: 140.114.216.126 (03/26 18:05) ※ 編輯: henry666666 來自: 140.114.216.126 (03/26 18:05)

03/26 19:33, , 7F
nor是verilog的保留字,使用後會呼叫two input的nor來用..
03/26 19:33, 7F

03/26 19:34, , 8F
你要用three input的nor,請自行找相關的cell來使用
03/26 19:34, 8F

03/26 20:27, , 9F
我試了一下, quartus ii 可以吃3-input nor沒問題
03/26 20:27, 9F

03/26 20:28, , 10F
應該是會自行尋找相符的閘 另外xilinx所的device都提供
03/26 20:28, 10F

03/26 20:29, , 11F
2~5 input的NOR by ISE Libraries Guide
03/26 20:29, 11F

03/26 20:30, , 12F
^有
03/26 20:30, 12F

03/26 20:30, , 13F
ISE會把 3-input nor 當做沒有東西, 最後全部電路都被
03/26 20:30, 13F

03/26 20:31, , 14F
化簡掉了 map report section 5 有說
03/26 20:31, 14F

03/26 20:32, , 15F
根據他的錯誤訊息 他是把它當等效電路化簡掉了
03/26 20:32, 15F

03/26 20:32, , 16F
@@ 慢了一步..
03/26 20:32, 16F

03/26 20:39, , 17F
樓上用看的比較厲害... 我是進ISE跑才知的
03/26 20:39, 17F

03/26 21:48, , 18F
嗚噢噢!
03/26 21:48, 18F
好,翻了一下Guide 有三個input的nor叫NOR3 然後我把NOR3打進去…… NOR3 N1(Q,w1,Qp,CLR_not), N2(Qp,w2,Q,PRS_not); 很好NOR3變成深紅色的highlight了 看來沒錯…… ……語法錯誤! 嗯,所以似乎是要include他的library才行 現在用笨方法:找到內附的NOR3.v加入專案 應該有更聰明的方法吧? 難道是#include<iostream> (喂)

03/27 16:38, , 19F
按照真直表自己刻一個吧
03/27 16:38, 19F
啊,他裡面已經有附刻好的 在 \Xilinx92i\verilog\src\uni9000\ 下 問題是我想要以後我講NOR3 他就知道是NOR3.v 我說NAND3 他就知道是NAND3.v 希望有不用一直add source的方法 既然軟體都highlight起來了,所以我猜應該有。 ※ 編輯: henry666666 來自: 140.114.216.126 (03/27 16:46)

03/28 19:04, , 20F
請用compxlib編譯Xilinx librares,就不用一個一個加。
03/28 19:04, 20F

03/28 19:04, , 21F
去google compxlib怎麼用。
03/28 19:04, 21F

03/28 19:05, , 22F
抱歉我說錯了。
03/28 19:05, 22F

03/28 19:06, , 23F
compxlib是用來compile Xilinx librares來"模擬"用的。
03/28 19:06, 23F

03/28 19:13, , 24F
我的ISE 8.2i不用Add source就可以直接使用NOR3。
03/28 19:13, 24F

03/28 19:15, , 25F
原po是在哪一步出錯?Synthesis嗎?詳細的錯誤訊息是什麼?
03/28 19:15, 25F
我蠢了,找到原因了 因為我習慣寫: not (a,b), (c,d); 不過,用NOR3的話,要給他名字: NOR3 N1(a,a_in1,a_in2,a_in3), N2(b,b_in1,b_in2,b_in3); 之前也有試著給他名字,不過好像還是顯示 「"(檔案名)" line (列號) Module instance must have an instance name」 但現在就可以直接動了,真謎XD ※ 編輯: henry666666 來自: 140.114.216.126 (03/28 20:24)

11/11 15:02, , 26F
去google com https://daxiv.com
11/11 15:02, 26F

01/04 21:54, 7年前 , 27F
去google com http://yofuk.com
01/04 21:54, 27F
文章代碼(AID): #19oaCOB_ (Electronics)