作者henry666666 (雨四光)
看板Electronics
标题[问题] 把D-latch写成Verilog HDL上传到FPGA板的问题
时间Wed Mar 25 22:43:33 2009
先讲一下,这是「我的作业」
如果不是我已经问过各种人,我绝对不会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)
1F:推 Hseuler:推牧师 03/26 00:21
2F:推 tkhan:nor只能有两个input,要三个的请去用三个input的cell 03/26 00:31
3F:推 fnrj:四夫是syn不出来 逻辑化减一下成两个input的吧~ 03/26 00:33
可是啊,把其中一个(比如说CLR_not)拿掉,
另一边的nor还是有三个input,
这样却会过,是为什麽呢?
而且我觉得如果只能input两个,应该在语法就抓到错误了?
or可以用3个,来改改看好了
加个inverter
……
过了,真的假的XD
不过这样写法有点累赘呢
不过把其中一个拿掉可以过的疑惑还是在?
我翻了一下课本,的确是有nor前面有三个input的图就是。
※ 编辑: henry666666 来自: 140.114.216.126 (03/26 01:09)
4F:嘘 JetKing:这我一年级也做过,不过我是三个inp,"虚"你课本没看熟 03/26 14:59
5F:→ JetKing:nor只能有有2个inp 所以你好像前面没看熟...我也是资科的 03/26 15:01
6F:推 RaichueRen:有什麽好嘘的 03/26 16:37
不是很懂,让我再问一下
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)
7F:推 tkhan:nor是verilog的保留字,使用後会呼叫two input的nor来用.. 03/26 19:33
8F:→ tkhan:你要用three input的nor,请自行找相关的cell来使用 03/26 19:34
9F:推 ksmrt0123:我试了一下, quartus ii 可以吃3-input nor没问题 03/26 20:27
10F:推 pupucar:应该是会自行寻找相符的闸 另外xilinx所的device都提供 03/26 20:28
11F:→ pupucar:2~5 input的NOR by ISE Libraries Guide 03/26 20:29
12F:→ pupucar: ^有 03/26 20:30
13F:→ ksmrt0123:ISE会把 3-input nor 当做没有东西, 最後全部电路都被 03/26 20:30
14F:→ ksmrt0123:化简掉了 map report section 5 有说 03/26 20:31
15F:→ pupucar:根据他的错误讯息 他是把它当等效电路化简掉了 03/26 20:32
16F:→ pupucar:@@ 慢了一步.. 03/26 20:32
17F:→ ksmrt0123:楼上用看的比较厉害... 我是进ISE跑才知的 03/26 20:39
18F:→ henry666666:呜噢噢! 03/26 21:48
好,翻了一下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> (喂)
19F:→ horsehead:按照真直表自己刻一个吧 03/27 16:38
啊,他里面已经有附刻好的
在 \Xilinx92i\verilog\src\uni9000\ 下
问题是我想要以後我讲NOR3
他就知道是NOR3.v
我说NAND3
他就知道是NAND3.v
希望有不用一直add source的方法
既然软体都highlight起来了,所以我猜应该有。
※ 编辑: henry666666 来自: 140.114.216.126 (03/27 16:46)
20F:推 zxvc:请用compxlib编译Xilinx librares,就不用一个一个加。 03/28 19:04
21F:→ zxvc:去google compxlib怎麽用。 03/28 19:04
22F:→ zxvc:抱歉我说错了。 03/28 19:05
23F:→ zxvc:compxlib是用来compile Xilinx librares来"模拟"用的。 03/28 19:06
24F:推 zxvc:我的ISE 8.2i不用Add source就可以直接使用NOR3。 03/28 19:13
25F:推 zxvc:原po是在哪一步出错?Synthesis吗?详细的错误讯息是什麽? 03/28 19:15
我蠢了,找到原因了
因为我习惯写:
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)