原创 Verilog 2005的新特性實現memory轉vector

2011-3-23 10:55 2078 4 5 分类: 工程师职场

Abstract
本文使用Verilog 2005的新特性實現memory轉vector。

Introduction
網友Adamite今天問我該如何將memory轉成vector,我們兩個在MSN研究了一番,發現Verilog 2001的generate與Verilog 2005的input memory可以達成,特別做下筆記。

重點是:『這些花俏的寫法,Quartus II 7.2/8.1都可以合成』。不過必須將Quartus II設定成支援Verilog 2005。

memory_to_vector.v / Verilog

1 /* 
2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3 
4 Filename    : memory_to_vector.v
5 Compiler    : Quartus II 8.1
6 Description : array to vector
7 Release     : 12/25/2008 1.0
8 */
9 
10 module memory_to_vector (
11   input [VECTORSIZE-1: 0] mem [ARRAYSIZE-1: 0],
12   output [ARRAYSIZE*VECTORSIZE-1: 0] vec
13 );
14 
15 parameter VECTORSIZE = 4;
16 parameter ARRAYSIZE = 3;
17 
18 genvar i,j;
19 generate
20   for(i = 0; i < ARRAYSIZE-1; i = i + 1) begin : array
21     for(j = 0; j < VECTORSIZE-1; j = j + 1) begin : vector
22       assign vec[i * VECTORSIZE + j] = mem[j];
23     end
24   end
25 endgenerate
26 
27 endmodule


18行

genvar i,j;
generate
  
for(i = 0; i < ARRAYSIZE-1; i = i + 1) begin : array
    
for(j = 0; j < VECTORSIZE-1; j = j + 1) begin : vector
      
assign vec[i * VECTORSIZE + j] = mem[j];
    
end
  
end
endgenerate


genvar與generate是Verilog 2001才有的,非常強大,可以配合for做一些規律性的assign,這在Verilog 95無法達成。

11行

input [VECTORSIZE-1: 0] mem [ARRAYSIZE-1: 0],


則是Verilog 2005才支援的,允許input與output為memory。

完整程式下載
memory_to_vector.7z

Conclusion
這些花俏的寫法,寫起來爽度當然很高,但就怕只能寫TestBench而不能合成,不過所幸以上的寫法在Quartus II 7.2/8.1都可以合成,可以安心使用。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-9-16 15:06

very nice!
相关推荐阅读
用户522854 2011-08-16 16:10
template c++
http://www.codeguru.com/forum/archive/index.php/t-333284.htmlhttp://www.codeguru.com/forum/archive/i...
用户522854 2011-07-06 20:55
Linux下的Source Insight+Ubuntu 10.04使用Wine安装Source I
Linux下的Source Insighthttp://rogerer.javaeye.com/blog/755346    在网上看到一朋友写了一篇推荐Linux下代码阅读工具Source ...
用户522854 2011-07-05 18:28
转]atoi、atof、_itoa、_itow 函数使用
http://www.cnblogs.com/heaad/archive/2009/08/10/1542511.htmlatoi、atof、itoa、itow函数是windows平台下实现字符串与数值...
用户522854 2011-07-05 18:25
【转】嵌入式经典面试题
嵌入式经典面试题(转)   C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面...
用户522854 2011-07-05 16:13
U-boot中TFTP 解释
http://www.cnblogs.com/heaad/archive/2009/08/10/1542538.html一、      概述      U-boot中的TFTP用于发送较小的文件。下层...
用户522854 2011-07-05 15:44
Linux驱动模块初始教程:一步一步,从helloworld到insmod->printk!!!
http://hi.baidu.com/ctgukuang/blog/item/5ee388924593c099a877a4ef.html【1】有必要查询下Linux内核# uname -r2.6.2...
EE直播间
更多
我要评论
1
4
关闭 站长推荐上一条 /3 下一条