Форум программистов, компьютерный форум, киберфорум
Программируемая логика: ПЛИС, ПАИС
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Klendathu
6 / 6 / 0
Регистрация: 10.11.2011
Сообщений: 53
1

"If Statement" и вызов класса в Verilog. Ошибка "simpleA.v:7: syntax error"

03.10.2012, 05:57. Просмотров 951. Ответов 7
Метки нет (Все метки)

Здравствуйте! Не знал, в каком разделе написать, но т.к. у Verilog почти такой же синтаксис, как и в С, то решил сюда.
Проблема в том, что когда я модуль "simpleA.v" вызываю только после выполнения условия, выдается ошибка:
simpleA.v:7: syntax error
simpleA.v:8: invalid module item

Если убрать оператор сравнения, то все работает. Код файла simpleA.v
C++
1
2
3
4
5
6
7
8
9
module simpleA(string,res);
 
   input [7.5*2:0]  string;
   output  [8*1:0] res;
 
   if (string = "65") //вот здесь вот ошибка
     assign res = "A";  
 
endmodule
Код файла simple_tb.v, который и вызывает модуль simpleA.v:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  
module simple_tb;
  reg [1*7:0] A = 7'b1000001;
  wire [8*1:0] res;
 
  
    
  if (A==1000001) //как правильно тут написать??
    simpleA s("65", res);
 
  
  initial 
  
  begin
  $dumpfile("simpleA.vcd");
  $dumpvars(0, s);
  
  
  $display ("%s \n", res);
  end
  
endmodule
Проблема, я считаю с оператором сравнения - как правильно его написать?

Добавлено через 14 часов 34 минуты
Помогите)) Или хотя бы направьте куда нужно
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2012, 05:57
Ответы с готовыми решениями:

Ошибка "project1.lpr(35,0) Fatal: Syntax error, "BEGIN" expected but "end of file" found"
type tarray= array of integer; var a:tarray; m,s,k:integer; procedure...

Ошибка "Syntax error, "BEGIN" expected but "end of file" found"
В чём заключается ошибка в 73 строке под названием "Syntax error, "BEGIN" expected but "end of...

Ошибка "Fatal: Syntax error, "BEGIN" expected but "END" found"
Ввожу unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil,...

Ошибка при компиляции "Syntax error "Begin" expected but ";" found"
При компиляции выдаёт ошибку "Syntax error "Begin" expected but ";" found" в блоке Procedure...

7
Klendathu
6 / 6 / 0
Регистрация: 10.11.2011
Сообщений: 53
05.10.2012, 21:50  [ТС] 2
Никто не знает verilog??

Добавлено через 13 часов 19 минут
Пожалуйста, перенесите тему в соответствующий раздел!
0
Nameless One
Эксперт С++
5805 / 3456 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
06.10.2012, 03:32 3
Цитата Сообщение от Klendathu Посмотреть сообщение
но т.к. у Verilog почти такой же синтаксис, как и в С
О_О С чего ты это решил?

Цитата Сообщение от Klendathu Посмотреть сообщение
simpleA.v:7: syntax error
Я не знаю Verilog, но могу предположить, что к первой ошибке может иметь отношение то, что у тебя в условном выражении записано присваивание вместо сравнения.
0
Klendathu
6 / 6 / 0
Регистрация: 10.11.2011
Сообщений: 53
06.10.2012, 08:02  [ТС] 4
Цитата Сообщение от Nameless One Посмотреть сообщение
Я не знаю Verilog, но могу предположить, что к первой ошибке может иметь отношение то, что у тебя в условном выражении записано присваивание вместо сравнения.
Смотрел в интернете правила записи условного оператора в Verilog, и сказано, что все так же, как в С.
Без условия все работает.
0
Nameless One
Эксперт С++
5805 / 3456 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
06.10.2012, 08:07 5
Klendathu, попробуй изменить шестую строку так:

Код
if (string == "65")
Что я хотел сказать: '==' - операция проверки на равенство, '=' - присваивания (это я не про Verilog конкретно, а про большУю часть ЯП). И логично предположить, что в условном выражении надо использовать именно проверку на равенство, а не присваивание. А у тебя там записано присваивание.
0
Klendathu
6 / 6 / 0
Регистрация: 10.11.2011
Сообщений: 53
06.10.2012, 08:33  [ТС] 6
Исправил, тебе выдает ошибку:
simple_tb:8: cannot evaluate genvar conditional expression: (A) == (7'd65)
1 error(s) during this elaboration
simple_tb.v:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module simple_tb;
  
  reg [7:0] A = 7'b1000001;
  wire [8*1:0] res;
 
  
    
  if (A==7'b1000001) //как правильно тут написать??
    simpleA s("1", res);
 
  
  initial 
  
  begin
  $dumpfile("simpleA.vcd");
  $dumpvars(0, s);
  
  
  $display ("%s \n", res);
  end
  
endmodule
simpleA.v:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
module simpleA(string,res);
 
    //  
   input [8:0] string;
   output [8:0] res ; 
   wire string;
   wire res;         
 
   if (string == "1")//вот здесь вот ошибка
     assign res = "A";  
     
 
endmodule
0
alkagolik
Заблокирован
06.10.2012, 16:50 7
Цитата Сообщение от Klendathu Посмотреть сообщение
//как правильно тут написать??
может быть константа 7'b100_0001 интерпретируется как знаковое число. Попробуй задать ее в памяти, а в условии сравнить 2 переменные.

Добавлено через 4 минуты
Цитата Сообщение от Klendathu Посмотреть сообщение
reg [7:0] A = 7'b1000001;
тут я понимаю выделен байт, который заполнен числом 7'b100_0001, эквивалентным 8'b0100_0001. Может дело в разрядности.
0
Klendathu
6 / 6 / 0
Регистрация: 10.11.2011
Сообщений: 53
08.10.2012, 18:39  [ТС] 8
Там выделено 7 бит и заполнено оно двоичным кодом 1000001. Даже если задать переменную как байтовую и заполнить ее числом 01000001 - результат тот же
0
08.10.2012, 18:39
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2012, 18:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка "Fatal: Syntax error, ";" expected but "." found"
звучит задание: создай программу, в которой можно преподнести введенное пользователем число к...

Ошибка "syntax error insert into statement"
Добрый вечер всем. При попытке занести данные из формы в бд (access) выдает ошибку syntax error...

Ошибка: project1.lpr(1,1) Fatal: Syntax error, "BEGIN" expected but "end of file" found
project1.lpr(1,1) Fatal: Syntax error, "BEGIN" expected but "end of file" found выдает эту ошибку...

Ошибка: Fatal: Syntax error, ";" expected but "identifier Mas" found.
Где здесь синтаксическая ошибка( "mas:=A2;" )? procedure TForm1.Button1Click(Sender: TObject); ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.