我设计了一个用于系数的ROM和一个上下计数器来逐一读取这些系数,但是对于起点,有两种情况,其中类型1的系数特定,类型2的系数另一组。 ..例如,对于类型1,我想从地址0开始,对于类型2,我想从地址30开始...我记得有人告诉我可以使用一些#或某些东西,但我不记得实际是什么方式
这是我的验证码
module UDcounter(input clk,rst,up,GItype,
output reg [5:0]addr);
always @(posedge clk,posedge rst)
if (rst)
addr<=6'b0;
else
begin
if (GItype) //assume 1 is a long GI type
begin
// addr=6'b000000;
if (up)
addr=addr+1;
else addr=addr-1;
end
else //for short GI
begin
//addr=6'b100000;
if (up)
addr=addr+1;
else addr=addr-1;
end
end
endmodule
这里的错误是,例如,每个时钟周期都从addr = 0开始寻址,并且输出地址始终为1(对于+1)行
答案 0 :(得分:0)
因此我从您的问题中了解到,您想设计一个可存储系数的ROM。 根据您的问题,我假设您在ROM中存储了两种系数,即类型a和类型b,例如类型a的起始地址为0,类型b的起始地址为30。要访问ROM,您需要两个计数器即将用作地址指针的addr_ptr_a和addr_ptr_b,假设ROM具有约60个地址位置,然后addr_ptr_a将从0计数到29,addr_ptr_b则从30计数到60。 GItype信号可用于确定启用哪个计数器。 我假设是顺序读取操作,对于随机读取操作,您将需要一个单独的逻辑来生成读取地址。