Мне нужно отправить сигнал с помощью доски, которая включает в себя Zynq.
Я создал пользовательское периферийное устройство AXI с несколькими выходными портами, которые я определил так:
output reg clk_out,
output reg signal_1,
output reg signal_2,
output reg signal_3,
...other signals
Каждый сигнал состоит из 88 битов, и по этой причине мне нужно использовать для каждого сигнала как минимум 3 разных регистра AXI (каждый регистр AXI является 32-разрядным).
Теперь я хочу отправить сигналы (с тактовой частотой 1 МГц) в соответствии с данными, которые, если они найдены в трех ведомых регистрах AXI, которые я заполняю из программы на C на PetaLinux. Для этого я создал цикл «всегда» следующим образом:
reg init=1;
reg [$clog2(88)-1:0] count = 0;
always@(posedge clk_1MHz) begin
if(init==1) begin
init<=0;
count<=0;
clk_out<=0;
signal_1<=0;
signal_2<=0;
signal_3<=0;
...
end else begin
if(clk_out==0)begin
if(count<32)begin
signal_1=slv_reg0[count];
signal_2=slv_reg3[count];
signal_3=slv_reg6[count];
...
end else if (count<64) begin
signal_1=slv_reg1[count-32];
signal_2=slv_reg4[count-32];
signal_3=slv_reg7[count-32];
...
end else if (count<88) begin
signal_1=slv_reg2[count-64];
signal_2=slv_reg5[count-64];
signal_3=slv_reg8[count-64];
...
end
count=count+1;
clk_out=~clk_out;
end
Сигналы должны отправляться синхронно. И практически код работает "вполне" хорошо. Мой вопрос: есть ли лучшие практики для того, чтобы делать то, что я должен делать?
Второй вопрос: поскольку у меня всего 48 сигналов, должен ли я использовать оператор <=? </p>