[問題] 把D-latch寫成Verilog HDL上傳到FPGA板 …
先講一下,這是「我的作業」
如果不是我已經問過各種人,我絕對不會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
03/26 00:31, 2F
推
03/26 00:33, , 3F
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
03/26 14:59, 4F
→
03/26 15:01, , 5F
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
03/26 19:33, 7F
→
03/26 19:34, , 8F
03/26 19:34, 8F
推
03/26 20:27, , 9F
03/26 20:27, 9F
推
03/26 20:28, , 10F
03/26 20:28, 10F
→
03/26 20:29, , 11F
03/26 20:29, 11F
→
03/26 20:30, , 12F
03/26 20:30, 12F
→
03/26 20:30, , 13F
03/26 20:30, 13F
→
03/26 20:31, , 14F
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
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
03/28 19:04, 20F
→
03/28 19:04, , 21F
03/28 19:04, 21F
→
03/28 19:05, , 22F
03/28 19:05, 22F
→
03/28 19:06, , 23F
03/28 19:06, 23F
推
03/28 19:13, , 24F
03/28 19:13, 24F
推
03/28 19:15, , 25F
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
11/11 15:02, 26F
→
01/04 21:54,
7年前
, 27F
01/04 21:54, 27F