关于Verilog二维数组处理的问题,大神们,目前在做一个编程,将一个二维数组[像素]里头的值加权进行内插处理,即处理后原来的数组变大了,用Verilog怎么算才好,由于二维数组不能作为port,求救!!附件图:A、B、C、D、E等为整像素点。b、h、m、s、aa、bb、cc、dd为半像素点,半像素的计算如下(b为一个例子):b=round((E-5F+20G+20H-5I+J)/32) round为取整函数加权系数固定:(1,-5,20,20,-5,1)/32【除了大写字母其他都是新增加的】怎样思路才好?求大神帮忙!
之前也是这么想的。但是,这编程的下一步要在生成值的基础上再取平均。然后就晕了。比如:d=(G+h)/2或者e=(G+j)/2,这算法好晕啊!
这个只要计算好就没有问题,没有办法只有这样,晕晕就好了!勉为其难吧!
追问话说,再问一个verilog里头的二维数组【存储器】只能一行行赋值?有没有一个一个赋值的!比如我现在要取G这个点的值,然后给某个变量P。这要怎么写啊?谢谢哈!
追答verilog可以一位一位的
赋值
吧!亦可以若干位一起赋值吧;还可以组合赋值吧!应该很灵活的;
那要怎么书写啊?
reg [1:100]A[1:100];
integer P;
P=A[3][3];
貌似不对啊!
reg [1:8] Ack, Dram [0:63];
. . .
Ack = Dram [60]; //
存储器的第
60
个单元。
不允许对存储器变量值部分选择或位选择。例如,
Dram [60] [2]
不允许。
Dram [60] [2:4]
也不允许。
在存储器中读取一个位或部分选择一个字的方法如下:将存储器单元赋值给寄存器变
量,然后对该寄存器变量采用部分选择或位选择操作。例如,
Ack [2]
和
Ack [2:4]
是合法的
表达式。
不允许对存储器变量值部分选择或位选择。例如,
Dram [60] [2]
不允许。
Dram [60] [2:4]
也不允许。
在存储器中读取一个位或部分选择一个字的方法如下:将存储器单元赋值给寄存器变
量,然后对该寄存器变量采用部分选择或位选择操作。例如,
Ack [2]
和
Ack [2:4]
是合法的
表达式。
谢谢回答哈!要处理的矩阵还是蛮大的。要1024X1024。处理之后矩阵还更大,慢慢受了。想知道还有没有其他方法?
追答寄存器可以取任意大小欧