Извините, если что-то здесь кажется очевидным, но я начинаю с этой новой FPGA, и мне очень нравится это, но это сводит меня с ума. Вот код Verilog для блока, который в принципе должен выполнять следующие действия с 8-битным регистром:
00000001
00000010
00000100
.. ...
01000000
10000000
01000000
00100000
module bit_bouncer(clock, enable, bouncer_out);
//INPUTS PORTS
input clock;
input enable;
//OUTPUTS PORTS
output bouncer_out;
//INPUT DATA TYPE
wire clock;
wire enable;
//OUTPUT DATA TYPE
reg [7:0] bouncer_out = 8'b00000001;
//Register to store data
reg direction = 0;
//CODE STARTS HERE
always @ (posedge clock) begin
if(enable) begin
bouncer_out = direction ? (bouncer_out >> 1) : (bouncer_out << 1);
direction <= (bouncer_out == 8'b00000001 || bouncer_out == 8'b10000000) ? ~direction : direction;
end
end
endmodule
Отлично работает в симуляции, но не работает на ПЛИС (Доска DE10-Nano, если интересно). Я также должен отметить, что это вызывается синхронизацией, прошедшей через PLL на FPGA, которая затем передается через блок DivByN. Вот код для блока DivByN:
module clk_divn #(
parameter WIDTH = 20,
parameter N = 1000000)
(clk,reset, clk_out);
input clk;
input reset;
output clk_out;
reg [WIDTH-1:0] pos_count = {WIDTH{1'b0}};
reg [WIDTH-1:0] neg_count = {WIDTH{1'b0}};
wire [WIDTH-1:0] r_nxt = {WIDTH{1'b0}};
always @(posedge clk)
if (reset)
pos_count <=0;
else if (pos_count ==N-1) pos_count <= 0;
else pos_count<= pos_count +1;
always @(negedge clk)
if (reset)
neg_count <=0;
else if (neg_count ==N-1) neg_count <= 0;
else neg_count<= neg_count +1;
assign clk_out = ((pos_count > (N>>1)) | (neg_count > (N>>1)));
endmodule
DivBYN также был протестирован в симуляции и работает нормально. Я фактически сделал симуляцию, в которой divByN подключен к «bouncer_block», если я могу так его назвать, и это тоже работает.
Все моделирует, но в реальной жизни ничего не работает .... но не работает это всегда так: P
Я надеюсь, что кто-то может помочь мне понять это, потому что я действительно хочу узнать больше о FPGA и использовать их в будущих проектах.
Если вы прочитаете все это, вы офигенно, и я sh тебе замечательный день :) 1029 *