在FPGA的开发中,如何对inout信号进行赋值,除了用assign语言之外?

 我来答
angela_angela
推荐于2018-02-28 · TA获得超过495个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:185万
展开全部
moduledinout(din,z,clk,dout,dinout);
input[7:0]din;
inputz;
inputclk;
output[7:0]dout;
inout[7:0]dinout;
reg[7:0]dout;
reg[7:0]din_reg;
assigndinout=(!z)?din_reg:8'bz;
always@(posedgeclk)
begin
if(!z)
din_reg=din;
else
dout=dinout;
end
Endmodule
对于你的提问,我没有弄明白,你说的是什么个意思,是指assign语句直接赋值吗?如果寄存一级,在赋值呢?再说能用assign语句表示的,基本上都可以用always也能表示出来,上面是一个inout的例子。还有什么疑问?可以追问
lunar25071020
2011-03-15 · 超过19用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:47.9万
展开全部
“<=” 也可以啊 如果还不对 那要怎么赋值 总得有东西才能赋给他吧 要是不需要=号 那我也不知道了
追问
非阻塞赋值语句一般都是用在进程语句always中的,请问如何用非阻塞语句赋值呢?可以给个实例吗
追答
确实是在always中用的 一定要这样非阻塞赋值我就不知道了 帮不上你了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
N_0_1
高粉答主

推荐于2016-07-25 · 关注我不会让你失望
知道大有可为答主
回答量:8628
采纳率:47%
帮助的人:844万
展开全部
可以使用verilog语言
1、inout端口不能被赋值为reg型,因此,不能用于always语句中。
2、if等条件语句只能用于initial语句及always语句。
3、因此,对于inout端口的逻辑判断,要用到?:条件表达式,来控制高阻的赋值
4、需要有一个中转的寄存器,这样,在always语句中,才可以将输入的信号赋给输出(用inout代替纯output)
5、高阻态不要用于芯片内部,应该用逻辑引到引脚处,然后用高阻来实现。

举个例子 input db2;
output db1;
inout db;
input le;
input clk;
//le为控制信号,1时,将db的值赋给db1,0时,将db2的值赋值个db
reg db_reg;

assign db = (le)? 1'bz : db_reg;
always @ (posedge clk)begin
if(le)
db1 <= db;
else
db_reg <=db2;
end
我也试了一下,下面这种组合逻辑在RTL视图中,也是可以实现的
assign db = (le)? 1'bz : db2;
assign db1 = (le)? db: db1;
此外,当inout信号作为输入时,在测试代码的初始化赋值中,应该 force db=1,用这种赋值的方式,否则由于db相当于是wire型,正常的赋值会被报错的。(再用force赋值的时候,必须要用=)。
在调用模块进行仿真时,输入信号要为reg 类型,输出信号要为wire
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式