1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 8
1

Сумматор на языке AHDL в Max Plus 2

14.11.2019, 00:10. Показов 2187. Ответов 15
Метки нет (Все метки)

Помогите написать программный код для 1024 разрядного сумматора. Есть много нюансов, к которым не могу найти решение, так как далеко не программист.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2019, 00:10
Ответы с готовыми решениями:

AHDL. Накапливающий сумматор
Здравствуйте,помогите,пожалуйста нарисовать функциональную схему накапливающего сумматора...

MAX II. AHDL. Реализация динамической задержки
Есть реализованный селектор длительности сигналов, он пропускает все сигналы длительностью от 1 до...

Даны векторы a и b , состоящие из семи компонентов. Найти max(max(Ai), max(Bi), max(¦Ai-Bi¦), max(Ai+Bі),1)
Даны векторы a и b , состоящие из семи компонентов. Найти max(max(Ai), max(Bi), max(¦Ai-Bi¦),...

Задать значения вещественным элементам массивов A(6),B(3),C(10) и вычислить Y=max(max(A),max(B),max(C)
Задать значения вещественным элементам массивов A(6),B(3),C(10) и вычислить...

15
167 / 126 / 30
Регистрация: 15.11.2012
Сообщений: 695
18.11.2019, 01:11 2
1024-разрядного?
А как вы ему данные на столько разрядов будете доставлять и забирать результат?
Почему Max Plus и почему AHDL?
0
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 8
18.11.2019, 23:11  [ТС] 3
Добавлено через 2 минуты
alexey6689, Не ищите здесь логики, это просто задание для освоения материала.
0
167 / 126 / 30
Регистрация: 15.11.2012
Сообщений: 695
18.11.2019, 23:12 4
Так о каких "многих нюансах" идет речь?
0
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 8
18.11.2019, 23:37  [ТС] 5
alexey6689, скажем так, я сделал это задание используя последовательную логику, это в принципе правильно, но, это все равно что сделать двигатель автомобиля через выхлопную трубу. Это все можно реализовать через мультиплексоры, но как? мне знаний не хватает. Вторая проблема, что результат у меня выводит на 1025 бит, а желательно, чтобы выводило сразу.
0
167 / 126 / 30
Регистрация: 15.11.2012
Сообщений: 695
18.11.2019, 23:49 6
Что вы понимаете под "последовательной логикой"? Вообще любой нормальный дизайн в базисе CPLD/FPGA практически обязательно представляет собой "последовательную логику", в некотором смысле - как минимум регистры на входе и на выходе. Для сумматора на 1024 бит для получения сколько-нибудь разумного быстродействия нужно разбивать задачу на части, скажем суммировать по 128 бит за раз, с регистрами после каждой итерации.

Однако у вас скорее всего задача - реализовать это хоть как-нибудь. Я правильно понял?

Рассмотрите такой вариант:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SUBDESIGN s1024
(
    IN1[1023..0]:INPUT;
    IN2[1023..0]:INPUT;
    CLK:INPUT;
    OUT[1024..0]:OUTPUT;
)
VARIABLE
    O1[1024..0]:DFF;
BEGIN
    O1[].CLK = CLK;
    O1[].D = IN1[] + IN2[];
    OUT[] = O1[];
END;
0
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 8
18.11.2019, 23:57  [ТС] 7
alexey6689, абсолютно верно. Отправляю мой код, может чем то Вам поможет. К сожалению, Ваш выдаёт ошибку.
include "napivsuma";
include "povnasuma";
SUBDESIGN summator
( aa, bb, clk, schet[15..0] : INPUT ;
cc : OUTPUT; )
VARIABLE
sumat[1022..0]: povnasuma;
napiv:napivsuma;
a[1024..1]:dff;
b[1024..1]:dff;
c[1024..1]:dff;
BEGIN
a[].clk = gnd;
b[].clk = gnd;
c[].clk = gnd;
if schet[] <= 1024 then
a[1].d = aa;
b[1].d = bb;
a[].clk = clk;
b[].clk = clk;
a[1024..2].d = a[1023..1].q;
b[1024..2].d = b[1023..1].q;
elsif schet[] == 1025 then
napiv.napivhod_a = a1.q;
napiv.napivhod_b = b1.q;
sumat[0].vhod_peren = napiv.perennapiv_ab;
sumat[1022..1].vhod_peren = sumat[1021..0].perenos_ab;
sumat[1022..0].vhod_a = a[1024..2].q;
sumat[1022..0].vhod_b = b[1024..2].q;
c1.d = napiv.vihodnapiv_c;
c[1024..2].d = sumat[1022..0].vihod_c;
c[].clk = !clk;
elsif schet[] > 1025 then
cc = c[1024].q;
c[].clk = clk;
c[1024..2].d = c[1023..1].q;
end if;
END;
0
167 / 126 / 30
Регистрация: 15.11.2012
Сообщений: 695
19.11.2019, 00:10 8
А у меня тот текст, что я приложил - собрался. Правда, в Quartus 13.0. Но это не должно иметь значения.
Какую ошибку выдал мой код?

Добавлено через 1 минуту
Хотя нет. Я не пробовал такие размерности. У меня регистры были 16-разрядные.
А с регистрами в 1024 бит не соберется конечно, с ошибкой "не хватает выводов" как минимум.
Попробуйте изменить разрядность в моем варианте с 1023..0 на 15..0
0
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 8
19.11.2019, 00:11  [ТС] 9
alexey6689,
Миниатюры
Сумматор на языке AHDL в Max Plus 2  
0
167 / 126 / 30
Регистрация: 15.11.2012
Сообщений: 695
19.11.2019, 00:15 10
Тогда напишите O1[1023..0]:DFF;

Добавлено через 37 секунд
Вот так, пишешь текст, а сайт сам морды вместо знаков вставляет -))
 Комментарий модератора 
используйте тэги, например[INLINE] [/INLINE]
0
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 8
19.11.2019, 00:22  [ТС] 11
alexey6689, а что поделаешь? нужно смириться) Всё равно ошибка
Миниатюры
Сумматор на языке AHDL в Max Plus 2  
0
167 / 126 / 30
Регистрация: 15.11.2012
Сообщений: 695
19.11.2019, 00:39 12
Так надо и в другой строке с 1024..0 сменить на 1023..0
1
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 8
19.11.2019, 01:33  [ТС] 13
alexey6689, боюсь, это слишком проблематично, мне ведь нужно вводить значения, а для такого количества это займет слишком много времени
0
167 / 126 / 30
Регистрация: 15.11.2012
Сообщений: 695
19.11.2019, 01:42 14
Что проблематично?
Какие значения и куда вводить?
0
1 / 1 / 0
Регистрация: 21.05.2016
Сообщений: 8
19.11.2019, 02:11  [ТС] 15
alexey6689, по коду строится в Waveform editor диаграмма (пилюры), где проверяется все ли корректно работает.
0
167 / 126 / 30
Регистрация: 15.11.2012
Сообщений: 695
19.11.2019, 11:10 16
И что там сложного? Это же шина, она представлена одним значением независимо от разрядности.

Добавлено через 7 минут
Я не знаю что умеет симулятор Max Plus, но думаю что он должен уметь работать не только на уровне ручного построения диаграмм, но и на уровне программного кода. То есть значения можно задавать не только меняя мышкой значения бит на картинке, а написав и "скормив" симулятору файл, в котором указываются нужные значения сигналов в нужное время, реакция на другие сигналы и т.д. Тогда проблемы задания значений шинам любой разрядности стоять не будет.
Я сомневаюсь что этот файл можно сделать на AHDL, обычно для этого используется VHDL/Verilog.

Добавлено через 7 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
`timescale 1ns / 1ps
 
module s1024_sim;
 
    // Inputs
    reg CLK;
    reg [1023:0] IN1;
    reg [1023:0] IN2;
    
    // Outputs
    wire [1023:0] OUT;
 
    // Instantiate the Unit Under Test (UUT)
    s1024 uut (
        .CLK (CLK),
        .IN1 (IN1), 
        .IN2 (IN2), 
        .OUT (OUT)
    );
 
    initial begin
        CLK = 0;
        IN1 = 0;
        IN2 = 0;
 
        #100;
        while (1)
            CLK = #10 ~CLK;
 
    end
 
    initial begin
        #120;
        IN1 = 1024'd55667788;
        IN2 = 1024'd88776655;
 
        #40;
        IN1 = 1024'd0;
        IN2 = 1024'd88776655;
 
    end
endmodule
Добавлено через 29 секунд
Это testbench на Verilog.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2019, 11:10

Существует ли учебник по программе MAX+plus II на русском языке?
Всем привет. Существует ли какой-то учебник по программе MAX+plus II на русском языке?

Ошибка запуска в 3Ds Max на английском языке.
Всем привет! Возникла небольшая проблема, помощи в которой я хотела бы попросить. Суть вот в...

Даны действительные числа A, B, C. Получить max(a,a+b)+max(a,b+c,a+b) \ 1+max(ab,bc)+max(a+bc,15,ac)
Всем привет)Помогите пожалуйста написать в С++ Даны действительные числа A, B, C. Получить...

Задача для курсовой: определить значение z=max(a, 2b)*max(2a-b,b), где max(x, y)-максимальные из чисел х и у
Определить значение z=max(a, 2b)*max(2a-b,b), где max(x, y)-максимальные из чисел х и у. Задачу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru