Напишите программу ОЗУ (RAM) по принципу работы FIFO на языке Verilog



module fifo#(parameter DATA_parameter ADDR_(
input [(DATA_WIDTH-1):0] data,
input [(ADDR_WIDTH-1):0] read_addr, write_addr,
input we, clk,
output reg [(DATA_WIDTH-1):0] q
);
reg [DATA_WIDTH-1:0]

ram[2**ADDR_WIDTH-1:0];
always @ (posedge clk)
begin
q <= ram[read_addr];
if (we)
ram[write_addr] <= data;
end
endmodule

 

Напишите программу модуля памяти с использованием цикла for

module for (clk,reset,m1,fifo);

input clk,m1,reset;

output reg [7:0] fifo;

integer i;

always @ (posedge clk)

if (reset) fifo<=0;

else begin

fifo [7] <=m1;

for (i=6; i>-1; i=i-1)

fifo [i] <=fifo [i+1];

end

endmodule

 

Напишите программу счетчика проходящие все свои значения в прямом и обратном направлении

Рассмотрим пример построения 8 разрядного счетчика, считающего в прямом направлении:
module count_en (en, clock, reset, out);
parameter Width = 8;
input clock, reset, en;
output [Width-1:0] out;
reg [Width-1:0] out;
always @(posedge clock or negedge reset)
if(!reset)
out = 8'b0;

else if(en)
out =out +1;
endmodule

 

Реализуйте программу на языке Verilog последовательную индикацию светодиодов с помощью сдвигового оператора

module example (clk, outj);

input clk;

output reg[7:0]out;

initial out=0;

always @ (posedge clk)

begin

out<=out<<1;

end

endmodule

 

Напишите программу кодера Хеминга для 4-х разрядного информационного кода

Пусть дано число 1111. 1 (20), 2 (21), 4 (22)- получаем 3 контрольных бита.

1111          ХХ1Х111

Вычисление контрольных бит:

1 2 3 4 5 6 7  
Х Х 1 Х 1 1 1  
              1
              2
              4

Значение каждого контрольного бита зависит от значений информационного бита, но не от всех, а только от тех, которые этот контрольный бит контролирует.

Контрольный бит с номером N контролирует все послед. N бит через каждые N бит, начиная с позиции N:

 « » - те биты, которые контролирует контрольный бит, номер которого справа. Вычисление каждого контрольного бита: берём каждый контрольный бит и смотрим, сколько среди контролируемых им битов единиц, получаем некоторое целое число и, если оно чётное, то ставим 0, в противном случае 1. Высчитав контрольные биты для нашего информационного слова получаем следующее : 1111111.

module Ham (clk, d,c);

input clk;

input [3:0] d;

output [6:0] c;

always@(posedge clk)

c[6] = d[3];

c[5] = d[2];

c[4] = d[1];

c[3] = d[1]^d[2]^d[3];

c[2] = d[0];

c[1] = d[0]^d[2]^d[3];

c[0] = d[0]^d[1]^d[3];

end

endmodule

 

Напишите программу кодера Хеминга для 8 разрядного информационного кода

Пусть дано число 11111111. 1 (20), 2 (21), 4 (22) 8(2^4)- получаем 4 контрольных бита.

1111          ХХ1Х111X1111

Значение каждого контрольного бита зависит от значений информационного бит, но не от всех, а только от тех, которые этот контрольный бит контролирует.

Контрольный бит с номером N контролирует все послед. N бит через каждые N бит, начиная с позиции N:

 « » - те биты, которые контролирует контрольный бит, номер которого справа. Вычисление каждого контрольного бита: берём каждый контрольный бит и смотрим, сколько среди контролируемых им битов единиц, получаем некоторое целое число и, если оно чётное, то ставим 0, в противном случае 1. 

module Ham (clk, d,c);

input clk;

input [7:0] d;

output [11:0] c;

always@(posedge clk)

c[11] = d[7];

c[10] = d[6];

c[9] = d[5];

c[8] = d[4];

c[7] = d[1]^d[2]^d[3]^d[7];

c[6] = d[3];

c[5] = d[2];

c[4] = d[1];

c[3] = d[1]^d[2]^d[3]^d[7];

c[2] = d[0];

c[1] = d[0]^d[2]^d[3]^d[5]^d[6];

c[0] = d[0]^d[1]^d[3]^d[4]^d[6];

end

endmodule

 

Напишите программу кодера Хеминга для 5 разрядного информационного кода

Пусть дано число 11111. 1 (20), 2 (21), 4 (22) 8(2^4)- получаем 4 контрольных бита.

1111          ХХ1Х111X1

Значение каждого контрольного бита зависит от значений информационного бит, но не от всех, а только от тех, которые этот контрольный бит контролирует.

Контрольный бит с номером N контролирует все послед. N бит через каждые N бит, начиная с позиции N:

 « » - те биты, которые контролирует контрольный бит, номер которого справа. Вычисление каждого контрольного бита: берём каждый контрольный бит и смотрим, сколько среди контролируемых им битов единиц, получаем некоторое целое число и, если оно чётное, то ставим 0, в противном случае 1. 

module Ham (clk, d,c);

input clk;

input [4:0] d;

output [8:0] c;

always@(posedge clk)

c[8] = d[4];

c[7] = d[1]^d[2]^d[3;

c[6] = d[3];

c[5] = d[2];

c[4] = d[1];

c[3] = d[1]^d[2]^d[3];

c[2] = d[0];

c[1] = d[0]^d[2]^d[3];

c[0] = d[0]^d[1]^d[3]^d[4];

end

endmodule

 

Напишите программу кодера Хеминга для 6 разрядного информационного кода

Пусть дано число 111111. 1 (20), 2 (21), 4 (22) 8(2^4)- получаем 4 контрольных бита.

1111          ХХ1Х111X11

Значение каждого контрольного бита зависит от значений информационного бит, но не от всех, а только от тех, которые этот контрольный бит контролирует.

Контрольный бит с номером N контролирует все послед. N бит через каждые N бит, начиная с позиции N:

 « » - те биты, которые контролирует контрольный бит, номер которого справа. Вычисление каждого контрольного бита: берём каждый контрольный бит и смотрим, сколько среди контролируемых им битов единиц, получаем некоторое целое число и, если оно чётное, то ставим 0, в противном случае 1. 

module Ham (clk, d,c);

input clk;

input [5:0] d;

output [9:0] c;

always@(posedge clk)

c[9] = d[5];

c[8] = d[4];

c[7] = d[1]^d[2]^d[3];

c[6] = d[3];

c[5] = d[2];

c[4] = d[1];

c[3] = d[1]^d[2]^d[3];

c[2] = d[0];

c[1] = d[0]^d[2]^d[3]^d[5];

c[0] = d[0]^d[1]^d[3]^d[4];

end

endmodule

 


Дата добавления: 2018-06-01; просмотров: 851; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!