Verilog inout 的问题
2010-05-14 12:13
483 查看
Verilog inout 信号的处理问题... 1
大话FPGA描述:... 1
我写的程序:... 1
Test.v. 1
仿真波形... 2
感想... 2
首先说明一件基本知识,在FPGA 设计中,只有在输入输出上可以使用双向信号,双向信号是不能使用在内部逻辑上的。一定不要用这种信号,否则工具会综合出一个你都不知道会是什么东西的东西。
针对一个双向端口,你需要把它变成一个输入信号 in,一个输出信号:out, 和一个输出使能信号: output_enable. 所以代码其实很简单:
Assign birsignal = output_enable ? out: 1’bz;
Assign in = birsignal、
这里有一个小小的提示,在写代码的时候突然不太清楚语法怎么写的时候,你可以在quartus 里面按一下右键,你可以发现一个insert template…的选择。试试看吧。
(
input clk, //clk input
output reg oe, //output enable
output reg [3:0] cnt, //counter
inout [1:0] data, //input and output data
input [1:0] data_in, //data for input
output [1:0] data_out, //data for output
output reg [1:0] dout //output bench
);
always@(posedge clk)//counter
begin
cnt<=cnt+1'b1;
if(cnt==7)
oe<=~oe;
end
assign data = oe ? data_in : 2'bzz;
assign data_out= data;
reg [1:0] counter;
always@(posedge clk)
begin
case(counter)
0:
begin
counter<=1;
dout<=2'bzz;
end
1:
begin
counter<=2;
dout<=2'bzz;
end
2:
begin
counter<=3;
dout<=2'b11;
end
3:
begin
counter<=0;
dout<=2'b00;
end
endcase
end
endmodule
感想
铭记,当遇到inout双向数据的时候,要把它分成2部分,
assign data = oe ? data_in : 2'bzz;
assign data_out= data;
这样即简化了问题,也不容易出错
大话FPGA描述:... 1
我写的程序:... 1
Test.v. 1
仿真波形... 2
感想... 2
大话FPGA描述:
双向信号首先说明一件基本知识,在FPGA 设计中,只有在输入输出上可以使用双向信号,双向信号是不能使用在内部逻辑上的。一定不要用这种信号,否则工具会综合出一个你都不知道会是什么东西的东西。
针对一个双向端口,你需要把它变成一个输入信号 in,一个输出信号:out, 和一个输出使能信号: output_enable. 所以代码其实很简单:
Assign birsignal = output_enable ? out: 1’bz;
Assign in = birsignal、
这里有一个小小的提示,在写代码的时候突然不太清楚语法怎么写的时候,你可以在quartus 里面按一下右键,你可以发现一个insert template…的选择。试试看吧。
我写的程序:
Test.v
module Test(
input clk, //clk input
output reg oe, //output enable
output reg [3:0] cnt, //counter
inout [1:0] data, //input and output data
input [1:0] data_in, //data for input
output [1:0] data_out, //data for output
output reg [1:0] dout //output bench
);
always@(posedge clk)//counter
begin
cnt<=cnt+1'b1;
if(cnt==7)
oe<=~oe;
end
assign data = oe ? data_in : 2'bzz;
assign data_out= data;
reg [1:0] counter;
always@(posedge clk)
begin
case(counter)
0:
begin
counter<=1;
dout<=2'bzz;
end
1:
begin
counter<=2;
dout<=2'bzz;
end
2:
begin
counter<=3;
dout<=2'b11;
end
3:
begin
counter<=0;
dout<=2'b00;
end
endcase
end
endmodule
仿真波形
感想
铭记,当遇到inout双向数据的时候,要把它分成2部分,
assign data = oe ? data_in : 2'bzz;
assign data_out= data;
这样即简化了问题,也不容易出错
相关文章推荐
- verilog中inout的定义问题
- Verilog非阻塞赋值的仿真/综合问题(Nonblocking Assignments in Verilog Synthesis) -下-
- verilog中双向端口inout的使用的总结[转帖]
- R语言-Error in file(out, "wt") : 无法打开链结问题解决
- 在verilog中关于inout口的两种设计方法
- “索引中丢失 IN 或 OUT 参数”问题解决办法
- Verilog inout 双向口使用和仿真
- snmp 中的MIB变量ifInOctets and ifOutOctets 溢出问题
- JAVA IO操作中的IN和OUT问题
- 关于LWIP在应用中遇到的一个问题memp_malloc: out of memory in pool TCP_PCB
- verilog中对inout信号的处理
- 润乾报表报出“索引中丢失 IN 或 OUT 参数”问题解决办法
- Focus问题终结帖,setFocus, focusInEvent,focusOutEvent
- verilog中对于inout信号的处理
- Verilog inout 双向口使用和仿真【转载】
- jQuery自定义动画函数animate() easing: "easeInOutCirc"导致的animate()动画抖动问题解决方法
- [转】Verilog inout使用
- Vlan ACL的IN和OUT的问题
- Verilog中inout的用法(二)
- wordpress内存不足问题“Fatal error:out of memoryin etc...”