MyException - 我的异常网
当前位置:我的异常网» 硬件开发 » verilog中调用其他module的语法有关问题

verilog中调用其他module的语法有关问题

www.myexceptions.net  网友分享于:2013-03-02  浏览:83次
求助:verilog中调用其他module的语法问题
我想在 registers 模块中, 调用 register 模块,组合出 60个寄存器, 这60个寄存器都是 register的实例。
但是其中有些 寄存器的 某些bit是 只读的,是由 外部信号控制的。
例如00H寄存器中,第四个bit代表 全双工,由外部信号控制,

此时 读写寄存器 就要 空出一个 bit来。

这个是调用。
//Net Control Register . 00H
wire temp1;
mac_register NCR_1
  (
  .DataIn (DataIn),
  .DataOut ({NCR_OUT[7:4],temp1,NCR_OUT[2:0]}),
  //.DataOut (NCR_OUT),
  .Write (Write),
  .Clk (Clk),
  .Reset (Reset),
  .SyncReset (1'b0)
  );
assign NCR_OUT[3] = FullD_In;


我目前的办法是,分而治之。把NCR_OUT的不受控制的那个bit空出来。
但是({NCR_OUT[7:4], ,NCR_OUT[2:0]}),但我发现只是空出来,不管用。
必须用一个 占位 连线 temp1 占据那一空位才行

请问各位大侠有什么好办法么?







这是registers 的 代码


module mac_registers( DataIn, Address, Rw, Cs, Clk, Reset, DataOut,
FullD_In, //test,test2,test3,dataInTest
);
parameter Tp = 1;

input [7:0] DataIn;
input [7:0] Address;
input Rw;
input Cs;
input Clk;
input Reset;

output [7:0] DataOut;
reg [7:0] DataOut;

input FullD_In;

wire Write = Cs & Rw;
wire Read = Cs & ~Rw;
wire NCR_SEL = Write && (Address == 8'h0);


wire [7:0] NCR_OUT;


//Net Control Register . 00H
wire temp1;
mac_register NCR_1
  (
  .DataIn (DataIn),
  .DataOut ({NCR_OUT[7:4],temp1,NCR_OUT[2:0]}),
  //.DataOut (NCR_OUT),
  .Write (Write),
  .Clk (Clk),
  .Reset (Reset),
  .SyncReset (1'b0)
  );
assign NCR_OUT[3] = FullD_In;


// Reading data from registers
always @ (Read or NCR_OUT or NCR_SEL)
begin
  if(Read) // read
case(Address)
8'h0: DataOut<=NCR_OUT;
default: DataOut<=8'h0;
endcase

  else
  DataOut<=8'h0;
end

endmodule




这是 register的代码 


module mac_register(DataIn, DataOut, Write, Clk, Reset, SyncReset);

parameter WIDTH = 8; // default parameter of the register width
parameter RESET_VALUE = 0;

input [WIDTH-1:0] DataIn;

input Write;
input Clk;
input Reset;
input SyncReset;

output [WIDTH-1:0] DataOut;
reg [WIDTH-1:0] DataOut;

always @ (posedge Clk or posedge Reset)
begin
  if(Reset)
  DataOut<=#1 RESET_VALUE;
  else
  if(SyncReset)
  DataOut<=#1 RESET_VALUE;
  else
  if(Write) // write
  DataOut<=#1 DataIn;
end

endmodule // Register


------解决方案--------------------
对,我看错了。 因为你是output, 条用的时候必须连接到wire。
------解决方案--------------------
你那个output是一组啊,如果不用wire占位的话,会对应不上的。你用一个wire把它的位置站住,然后wire什么都不连。生成的硬件结构应该就是那个引脚空下来了。这应该没问题的吧?
------解决方案--------------------
我发现,temp1不用声明也行。也就是把 wire temp1; 去掉
然后我还发现,名称随便起, 居然编译综合都能通过。
这是出于什么考虑?挺奇怪的,这种bug太严重了

这个是因为,在verilog中如果使用一个变量,而没对其声明的话,默认是wire型的变量

文章评论

亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
10个调试和排错的小建议
10个调试和排错的小建议
每天工作4小时的程序员
每天工作4小时的程序员
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
代码女神横空出世
代码女神横空出世
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员和编码员之间的区别
程序员和编码员之间的区别
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员都该阅读的书
程序员都该阅读的书
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我是如何打败拖延症的
我是如何打败拖延症的
 程序员的样子
程序员的样子
那些争议最大的编程观点
那些争议最大的编程观点
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
为什么程序员都是夜猫子
为什么程序员都是夜猫子
旅行,写作,编程
旅行,写作,编程
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员必看的十大电影
程序员必看的十大电影
如何成为一名黑客
如何成为一名黑客
老程序员的下场
老程序员的下场
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
编程语言是女人
编程语言是女人
漫画:程序员的工作
漫画:程序员的工作
我的丈夫是个程序员
我的丈夫是个程序员
中美印日四国程序员比较
中美印日四国程序员比较
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
一个程序员的时间管理
一个程序员的时间管理
Java程序员必看电影
Java程序员必看电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的鄙视链
程序员的鄙视链
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
鲜为人知的编程真相
鲜为人知的编程真相
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有