Про верхний уровень не в курсе. И новыми фишками я уже давно не интересовался. Раньше было много разговоров про systemC, но это не моё. Имхо, это концептуально хрень. В HDL описании, каждая строка типа "signalA = signalB AND signalС;" - это процесс. Параллельный остальным, таким же. Ну куда тут любому языку программирования ?
Пытаюсь реализовать несистематический кодер циклического кода. Написал такой код, но что-то последовательность генерируется совсем не так. Кто-то понимает, что я мог сделать не так? Кодер: Код (C++): module hamming_coder_nonsystematic( input logic clk, input logic enable, input logic in, output logic out ); logic [3:0] s; logic [3:0] counter = 4'b0000; always @(posedge clk) if (enable) counter <= counter + 1'h1; always @(posedge clk) begin if (enable) begin s[3] <= in; s[2] <= s[3]; s[1] <= s[2]; s[0] <= s[1]; end else s <= 4'b0000; if (counter == 4'h0) s <= 4'b0000; end assign out = in ^ s[1] ^ s[0]; endmodule Тестбенч: Код (Text): module hamming_coder_nonsystematic_tb(); logic clk; logic enable; logic in; logic out; initial begin clk = 0; in = 0; forever #5 clk = ~clk; end hamming_coder_nonsystematic uut(clk, enable, in, out); initial begin // Тест 11111000001 // Должно кодироваться в x^14+x^13+x^12+x^10+x^6+x^4+x+1 = 11101001010011 #1 enable = 1; #10 in = 1; #10 in = 1; #10 in = 1; #10 in = 1; #10 in = 1; #10 in = 0; #10 in = 0; #10 in = 0; #10 in = 0; #10 in = 0; #10 in = 1; #10 in = 0; #10 in = 0; #10 in = 0; #10 in = 0; $stop; #1 enable = 1; #10 in = 1; #10 in = 0; #10 in = 0; #10 in = 0; #10 in = 0; #10 in = 0; #10 in = 1; #10 in = 1; #10 in = 1; #10 in = 1; #10 in = 1; #10 in = 0; #10 in = 0; #10 in = 0; #10 in = 0; $stop; end always @(posedge clk) #2 $write(out); endmodule
verylog не знаю(вроде это он?), но вроде вы пустили на вход толпу единиц. Верно? Зачем, имхо, лучше пустить кучу нулей, даже новичку будет проще анализировать столь простую последовательность в сдвиговом регистре и на выходе. Потом пускаете одинокую единицу, опять же проще и в регистре, и на выходе = in ^ s[1] ^ s[0]; Если косяк не найдётся, то потом уже парить мозги чуть более сложной, меняющейся ситуацией на трёхвходовом искл. ИЛИ. Имхо, конечно...