Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16597 Discussions

When to reset a signal.

Altera_Forum
Honored Contributor II
1,204 Views

 

 

In one process I set a command 

when X"01" => --continious data read cont_ram_addr := to_integer(unsigned(addr_bus)); ram_command <= RAM_CONT_WRITE; when X"02" => --continious data write cont_ram_addr := to_integer(unsigned(addr_bus)); ram_command <= RAM_CONT_READ; when X"03" => --read data command ram_command <= RAM_BYTE_WRITE; when X"04" => --write data command ram_command <= RAM_BYTE_READ;  

In another process I read this command and do some actions according the command. case RamState is when ST_IDLE => if(ram_command > "000") then case ram_command is when RAM_CONT_WRITE => RamState <= ST_CONT_WR_RAM; when RAM_CONT_READ => RamState <= ST_CONT_RD_RAM; when RAM_BYTE_WRITE => RamState <= ST_WR_RAM; when RAM_BYTE_READ => RamState <= ST_RD_RAM; when others => RamState <= ST_IDLE; end case; end if; when ST_WR_RAM => - --do something RamState <= ST_IDLE; when ST_RD_RAM => --do something RamState <= ST_IDLE; when ST_CONT_WR_RAM => -do something RamState <= ST_IDLE; when ST_CONT_RD_RAM => -- do something RamState <= ST_IDLE;  

 

 

But where and when I should reset ram_command. If I return to ST_IDLE I once again evaluate ram_command case and create endless loop. ram_command should be reset at some point. 

0 Kudos
5 Replies
Altera_Forum
Honored Contributor II
508 Views

This is a design choice for the designer. Without knowing the design, it will be impossible to comment.

0 Kudos
Altera_Forum
Honored Contributor II
508 Views

Looks like you either need to incorporate the command setting logic into the command executing state machine, or at least you need the state machine to be able to communicate with the command setting logic (to reset the command or whatever you need to make the design work). As Tricky said, very hard to give advice from such little information.

0 Kudos
Altera_Forum
Honored Contributor II
508 Views

 

--- Quote Start ---  

Looks like you either need to incorporate the command setting logic into the command executing state machine, or at least you need the state machine to be able to communicate with the command setting logic (to reset the command or whatever you need to make the design work). As Tricky said, very hard to give advice from such little information. 

--- Quote End ---  

 

 

That's the problem. I'd gladly reset ram_command in the second process. But I get Error (10028): Can't resolve multiple constant drivers for net. So I dont know when I'm good to reset the signal.
0 Kudos
Altera_Forum
Honored Contributor II
508 Views

 

--- Quote Start ---  

That's the problem. I'd gladly reset ram_command in the second process. But I get Error (10028): Can't resolve multiple constant drivers for net. So I dont know when I'm good to reset the signal. 

--- Quote End ---  

 

 

Like I said in your other post, you need to communicate between processes with signals. Create a signal for the sole purpose to send a message between the processes that can reset you ram_command signal.
0 Kudos
Altera_Forum
Honored Contributor II
508 Views

 

--- Quote Start ---  

Like I said in your other post, you need to communicate between processes with signals. Create a signal for the sole purpose to send a message between the processes that can reset you ram_command signal. 

--- Quote End ---  

 

 

But who reset the other signal - the one that reset ram_command? And when? 

 

 

Thanks guys. Stupid question. I figured it out.
0 Kudos
Reply