我有一个问题,关于我正在研究的AGC/SPI控制器的奇怪行为.它是在Verilog中完成的,目标是Xilinx Spartan 3e FPGA.控制器是一个依赖外部输入启动的FSM.FSM的状态存储在未明确初始化的state_reg中,因为我认为未初始化的寄存器默认为零.当我实现控制器时,FSM将无法运行.监控SPI总线我没有观察到任何活动.为了监视FSM,我将state_reg路由到一个输出总线,该总线连接到LED组.这就是分配data_out = state_reg的行正在进行的操作.我发现当我这样做时,FSM和AGC/SPI控制器在SPI总线上观察到正确.似乎正在发生的事情是,state_reg在初始化时处于未确定状态,因此FSM永远不会处于任何状态,因此它不会运行.但是通过将state_reg分配给输出,它初始化为00000000,正如我预期的那样从头开始.所以我的问题是,一个未初始化的寄存器是否应该假设值为0?通过为输出分配一个未初始化的寄存器,是否会强制它假设为零?或者是其他事情发生在我不明白的地方?以下是我的代码.我已经评论了*state_reg**被分配给输出线[7:0] data_out的相关部分.我知道这是一个很长的问题,但我真的想了解我应该期待什么类型的行为.谢谢.
module agc_control
(
input wire [7:0] agc_data,
input wire clk,
input wire agc_start,
input wire AMP_DO,
output reg MOSI,
output reg SCK,
output reg CS_AMP,
output wire inhibit_ADC,
output wire [7:0] data_out
);
//signals
reg [4:0] state_reg,
reg [2:
0] ampclkreg;
reg ampclk;
reg [7:0] agc_data_reg;
reg agc_running;
reg [7:0] data_out_reg;
wire agc_done;
//ampclk generation
always @(posedge clk)
begin …Run Code Online (Sandbox Code Playgroud)