Как мне вернуть значение после проверки условия?

Следующий код должен проверять значение 'e' такое, что gcd (h, e) = 1. Где 1

module great(p,q,e,d);
input p,q;
output e,d;
reg e,d;
h=((p-1)*(q-1));
always 
begin
for(e=2;e<h;e=e+1)
begin
g1=gcd(h,e);
if (g1==1)
return e;

Добро пожаловать в stackoverflow. Уделите несколько минут, чтобы прочитать как задать вопрос. Это поможет вам получить ответ на этот вопрос. В общем, постарайтесь дать читателю возможность понять, о чем вы спрашиваете. В этом случае могут помочь некоторые отступы вместе с тем, что вы пробовали, что он делал и что вы хотите от него делать.

wordragon 08.09.2018 05:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
31
1

Ответы 1

Если под «возвратом значения» вы имеете в виду выдачу значения, которое можно использовать в другом модуле, вы должны использовать вывод этого модуля в качестве «возвращаемого» значения. Но даже игнорируя return e, я не думаю, что ваш код будет работать, если вы попытаетесь его запустить, потому что он слишком похож на язык программирования. Есть несколько серьезных ошибок:

  1. Вы уже объявили output e,d, поэтому вы не можете объявить два reg с одним и тем же именем. Вместо этого вы, вероятно, захотите output reg e,d.

  2. Вы не объявили тип для h или g1.

  3. У вас есть цикл for для e, но e никогда не может быть ничем иным, кроме 0 или 1, потому что вы не установили для него размер, поэтому по умолчанию он имеет длину всего 1 бит. Даже если он был достаточно большим, чтобы вы могли увеличить его после 1, по умолчанию это тип wire, и вы не можете напрямую делать такие приращения в wire.
  4. Я предполагаю, что gcd - это какой-то модуль, который вы сделали где-то в другом месте, но это не то, как вы соединяете модули вместе. Вы не можете называть это функцией. Вы должны использовать wire и reg для соединения входов и выходов двух модулей вместе, почти так же, как вы подключаете компоненты.

Во всяком случае, это то, что мне больше всего запомнилось. Я думаю, вы кодируете свой Verilog, как если бы это был Python, и это является причиной этих недоразумений. Verilog очень и очень отличается.

Другие вопросы по теме