7. Аппаратная реализация алгоритмов (Семинары)
Описание файла
Файл "7. Аппаратная реализация алгоритмов" внутри архива находится в папке "Семинары". PDF-файл из архива "Семинары", который расположен в категории "". Всё это находится в предмете "математические модели и методы синтеза сбис" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Математические модели и методылогического синтеза СБИСОсень 2015План семинара• Понятие об операционном и управляющемавтоматах• Построение указанных автоматов поописанию алгоритма• Использование элементов памяти• Лабораторная работа – аппаратнаяреализация элементарного алгоритма.Регистрыmodule register#(parameter(output reginputinputWidth = 8)[Width-1:0] out,[Width-1:0] in,clear, load, clock);always @(posedge clock)if (~clear)out <= 0;else if (~load)out <= in;endmoduleОперационный и управляющийавтоматыПример алгоритмаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}Определение регистровfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}x_loadx_clearRegister xy_loady_clearRegister yi_loadi_clearRegister i• Каждая переменная порождает свой регистр• Возможно, что выбранная реализация требуетдополнительные (служебные) регистры• x_load = 0 – загрузка нового значения в регистр• x_clear = 0 – сброс регистра в значение «0»Построение операционногоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}1Adderi_loadi_clearRegister iПостроение операционногоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}1Adderi_loadi_clearRegister i10CompareLEQiLEQ10Построение операционногоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;y_load}y_clearif(x<0) {y = 0;} else {x = 0;}x_loadx_clearRegister y1AdderAdderRegister xi_loadi_clearRegister i10CompareLEQiLEQ10Построение операционногоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;y_load}y_clearif(x<0) {y = 0;} else {x = 0;}x_loadx_clearRegister y1AdderAdderRegister xi_loadi_clearRegister i100CompareLTCompareLEQxLT0iLEQ10Построение операционногоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}x_loadx_cleary_loady_cleari_loadi_clearxLT0iLEQ10xОперационныйавтоматyiПостроение управляющегоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}Управляющийавтоматx_loadx_cleary_loady_cleari_loadi_clearxLT0iLEQ10xОперационныйавтоматyiДиаграмма Мура управляющегоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}.
. .x_cleari_clearAДиаграмма Мура управляющегоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}. . .x_cleari_clearAx_loadi_loadBДиаграмма Мура управляющегоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}. . .НетвыводаCx_cleari_clearAx_loadi_loadBДиаграмма Мура управляющегоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}. . .x_clearDx_cleari_clearAx_loadi_loadB~(i<=10)&&~(x<0)y_clear~(i<=10)&&(x<0)Ei<=10НетвыводаCДиаграмма Мура управляющегоавтоматаfor(x = 0, i = 0; i <= 10; i++) {x = x + y;}if(x<0) {y = 0;} else {x = 0;}. . ..
. .x_clearDFx_cleari_clearAx_loadi_loadB~(i<=10)&&~(x<0)y_clear~(i<=10)&&(x<0)Ei<=10НетвыводаCПостроение управляющегоавтомата• Кодирование состоянийA:3’b000B:3’b001C:3’b010D:3’b011E:3’b100F:3’b101Построение управляющегоавтомата• Реализация комбинационной частиalways @ (c_state, xLT0, iLEQ10)case (c_state)3'b000: //State A…3'b001: //State B…3'b010: //State C…3'b011: //State D…3'b100: //State E…3'b101: //State F…default:endcase3'b000: //State Abeginendi_load = 1;i_clear = 0;x_load = 1;x_clear = 0;y_load = 1;y_clear = 1;n_state = 3'b001;Построение управляющегоавтомата• Реализация элементов задержкиalways @ (posedge clock, negedge reset)if (~reset)c_state <= 0;elsen_state <= c_state;УправляющийавтоматСигналы управлениярегистрамиИспользование элементовпамятиДанныеОперационныйавтоматАдресБлок памяти спроизвольнымдоступомФайл инициализации памяти(.MIF)DEPTH= 32;WIDTH= 4;ADDRESS_RADIX= HEX;DATA_RADIX= BIN;CONTENTBEGIN0 : 0000;1 : 0001;2 : 0010;3 : 0011;...1E : 1110;1F : 1111;END;.