Перейти к содержанию
    

AnatolySh

Участник
  • Постов

    270
  • Зарегистрирован

  • Посещение

Весь контент AnatolySh


  1. Спасибо. Всё работает. Даже и не помню (соответственно, не понимаю) откуда фигурные скобки взялись. + Вы правы: надо с Тиклем поподробнее ознакомиться, раз такие вопросы задаю. + Спасибо andrew_b за ссылки.
  2. Прошу совета клуба. Мой вопрос касается упрощения вывода одинаковых внутренних сигналов одинаковых модулей, включённых в модуль верхнего уровня посредством директивы generate. Для формулировки вопроса максимально упростил свою задачу. Итого: у мне есть модуль верхнего уровня (for_ext), в котором я "инстанциирую" несколько одинаковых модулей нижнего уровня (for_int). Для моделирования используется test-bench for_ext_test и tcl do-файл work_for_loop.do Код файла for.v таков: `define CH_NUM 4 `define CH_NUM_RNG `CH_NUM - 1 : 0 `define PERIOD 10 `define HALF_PERIOD `PERIOD/2 `define START_RES 2 `define LENGTH_RES `PERIOD module for_int ( input clk, res, din, output reg dout); always @(posedge clk) dout <= (res) ? 1'b0: din; endmodule module for_ext ( input clk, res, input [`CH_NUM_RNG] din, output [`CH_NUM_RNG] dout ); genvar i; generate for (i = 0; i < `CH_NUM; i = i + 1) begin: gen_block for_int for_int_inst (.clk(clk), .res(res), .din(din[i]), .dout(dout[i])); end endgenerate endmodule `timescale 1ns / 100ps module for_ext_test; reg clk, res; reg [`CH_NUM_RNG] din; wire [`CH_NUM_RNG] dout; genvar i; for_ext for_ext_inst (.clk(clk), .res(res), .din(din), .dout(dout)); initial begin clk = 0; res = 0; #`START_RES res = 1; #`LENGTH_RES res = 0; end generate for (i = 0; i < `CH_NUM; i = i + 1) begin: din_init initial din[i] = 0; end endgenerate initial forever #(`HALF_PERIOD) clk = !clk; endmodule Код скрипта work_for_loop.do следующий: quit -sim vlog -incr -reportprogress 300 -work work_for_loop work_for_loop/for.v vsim -voptargs=+acc work_for_loop.for_ext_test -wlfdeleteonquit add wave -divider "for_ext_test" add wave sim:/for_ext_test/* for {set i 0} {$i < 3} {incr i} { add wave -divider {"for_ext_inst[$i]"} add wave {sim:/for_ext_test/for_ext_inst/gen_block[$i]/for_int_inst/*} } run 100ns view wave -title "monitor" -undock -x 1920 -y 0 -width 1280 -height 900 wave zoom full В результате запуска скрипта work_for_loop.do на выполнение Modelsim выдаёт: VSIM(paused)> do work_for_loop.do # Model Technology ModelSim ALTERA vlog 10.1d Compiler 2012.11 Nov 2 2012 # -- Compiling module for_int # -- Compiling module for_ext # -- Compiling module for_ext_test # # Top level modules: # for_ext_test # vsim -voptargs=+acc -wlfdeleteonquit work_for_loop.for_ext_test # Loading work_for_loop.for_ext_test # Loading work_for_loop.for_ext # Loading work_for_loop.for_int # ** Error: (vish-4014) No objects found matching '/for_ext_test/for_ext_inst/gen_block[$i]/for_int_inst/*'. # Error in macro ./work_for_loop.do line 11 # (vish-4014) No objects found matching '/for_ext_test/for_ext_inst/gen_block[$i]/for_int_inst/*'. # while executing # "add wave {sim:/for_ext_test/for_ext_inst/gen_block[$i]/for_int_inst/*}" # ("for" body line 3) # invoked from within # "for {set i 0} {$i < 3} {incr i} { # add wave -divider {"for_ext_inst[$i]"} # add wave {sim:/for_ext_test/for_ext_inst/gen_block[$i]/for_int_inst/*} # }" VSIM(paused)> Мой вопрос в следующем: как, используя средства tcl Modelsim-a вывести одинаковые сигналы одинаковых модулей в окно временных диаграмм? Возможно ли это? B)
  3. Перед запуском очередной симуляции Вам надо завершать текущую. В своих do файлах я это делаю так: quit -sim vlog -incr -reportprogress 300 -work work_lib work_lib/file.v vsim -voptargs=+acc work_lib.test_main -wlfdeleteonquit add wave -divider "test_main" add wave sim:/test_main/* add wave -divider "main_inst" add wave sim:/test_main/main_inst/* run 1us view wave -title "monitor" -undock -x 1920 -y 0 -width 1280 -height 900 wave zoom full #wave zoom range 54.68ns 54.695ns где quit -sim ----------- завершение предыдущего моделирования и закрытие wave - окна vlog -incr -reportprogress 300 -work work_lib work_lib/file.v ----------- инкрементальная компиляция файла file.v в подкаталоге (относительно расположения do - файла) work_lib в библиотеку work_lib vsim -voptargs=+acc work_lib.test_main -wlfdeleteonquit ----------- запуск моделирования модуля верхнего уровня test_main из библиотеки work_lib дальше, вроде, понятно, view wave -title "monitor" -undock -x 1920 -y 0 -width 1280 -height 900 - а это, как раз, то, что вы спрашивали про размер и расположение окна. B)
  4. Не прошло и полтора года .... Как раз столкнулся с метастабильностью на реальном железе. В функциональном моделировании не могу получить картину, как у ТС. Просьба посмотреть в архиве : что не так? Metastab.qpf # -------------------------------------------------------------------------- # # # Quartus II 32-bit # Version 13.1.0 Build 162 10/23/2013 SJ Full Version # Date created = 12:33:22 August 15, 2014 # # -------------------------------------------------------------------------- # QUARTUS_VERSION = "13.1" DATE = "12:33:22 August 15, 2014" # Revisions PROJECT_REVISION = "Metastab" Metastab.qsf # -------------------------------------------------------------------------- # # # Quartus II 32-bit # Version 13.1.0 Build 162 10/23/2013 SJ Full Version # Date created = 12:33:22 August 15, 2014 # # -------------------------------------------------------------------------- # # # Notes: # # 1) The default values for assignments are stored in the file: # Metastab_assignment_defaults.qdf # If this file doesn't exist, see file: # assignment_defaults.qdf # # 2) Altera recommends that you do not modify this file. This # file is updated automatically by the Quartus II software # and any changes you make may be lost or overwritten. # # -------------------------------------------------------------------------- # set_global_assignment -name FAMILY "MAX II" set_global_assignment -name DEVICE EPM1270T144I5 set_global_assignment -name TOP_LEVEL_ENTITY mst set_global_assignment -name ORIGINAL_QUARTUS_VERSION 13.1 set_global_assignment -name PROJECT_CREATION_TIME_DATE "12:33:22 AUGUST 15, 2014" set_global_assignment -name LAST_QUARTUS_VERSION 13.1 set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name MIN_CORE_JUNCTION_TEMP "-40" set_global_assignment -name MAX_CORE_JUNCTION_TEMP 100 set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 5 set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR "-1" set_global_assignment -name POWER_EXT_SUPPLY_VOLTAGE_TO_REGULATOR 3.3V set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (Verilog)" set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY ON -section_id eda_simulation set_global_assignment -name EDA_OUTPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_simulation set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "NO HEAT SINK WITH STILL AIR" set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS TEST_BENCH_MODE -section_id eda_simulation set_global_assignment -name EDA_NATIVELINK_SIMULATION_TEST_BENCH tmst -section_id eda_simulation set_global_assignment -name EDA_TEST_BENCH_NAME tmst -section_id eda_simulation set_global_assignment -name EDA_DESIGN_INSTANCE_NAME NA -section_id tmst set_global_assignment -name EDA_TEST_BENCH_MODULE_NAME tmst -section_id tmst set_global_assignment -name EDA_NATIVELINK_SIMULATION_SETUP_SCRIPT work_mst.do -section_id eda_simulation set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" set_location_assignment PIN_4 -to cpu_wen set_location_assignment PIN_5 -to we set_location_assignment PIN_18 -to clk set_global_assignment -name SDC_FILE mst.sdc set_global_assignment -name VERILOG_FILE mst.v set_global_assignment -name VERILOG_FILE tmst.v set_global_assignment -name EDA_TEST_BENCH_FILE tmst.v -section_id tmst set_global_assignment -name USE_CONFIGURATION_DEVICE ON set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP" set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON mst.v module mst (input clk, input cpu_wen, output reg we); // metastability reg [2:0] we_reg = 3'h0; always @(posedge clk) we_reg <= {we_reg[1:0], !cpu_wen}; initial we = 1'b0; always @(posedge clk) we <= we_reg[2:1] == 2'b01; endmodule tmst.v `define CLK_HALF_PERIOD 1 `define CPU_WE_HALF_PERIOD 6 `define START_SIM 3 `timescale 1us / 100ns module tmst; // test mst reg clk, cpu_wen; wire we; mst mst_inst(.clk(clk), .cpu_wen(cpu_wen), .we(we)); initial begin clk = 0; cpu_wen = 1; end initial begin #`START_SIM forever #`CLK_HALF_PERIOD clk = !clk; end initial begin #`START_SIM forever #`CPU_WE_HALF_PERIOD cpu_wen = !cpu_wen; end endmodule //tmst mst.sdc #************************************************************** # Time Information #************************************************************** set_time_format -unit ns -decimal_places 3 #************************************************************** # Create Clock #************************************************************** create_clock -name {clk} -period 12.500 [get_ports {clk}] create_clock -name {clk60MHz} -period 16.666 derive_pll_clocks #************************************************************** # Set Clock Uncertainty #************************************************************** #derive_clock_uncertainty // unsupported #************************************************************** # Set Input Delay #************************************************************** set_input_delay -clock { clk60MHz } -min 0.0 [get_ports {cpu_wen}] set_input_delay -clock { clk60MHz } -max 0.0 [get_ports {cpu_wen}] #************************************************************** # Set False Path #************************************************************** set_false_path -from [get_pins -compatibility_mode *] -to [get_ports {we}] work_mst.do add wave -divider "tmst" add wave sim:/tmst/* add wave -divider "mst_inst" add wave sim:/tmst/mst_inst/* run 20us view wave -title "monitor" -undock -x 1920 -y 0 -width 1280 -height 900 wave zoom full Заранее спасибо.
  5. Собственно тема.. Напряжение на выходе драйвера по сервис мануалу в норме. Вывод - лампа. Куда кинуть взгляд?
  6. Спасибо, добрый человек ) Разъёмы разысканы, счёт получен, завтра оплачу, 3-4 недели, и я - счастливый обладатель сего чуда ))
  7. Спасибо огромное за ответ. Я правильно понимаю, что двойной с защелками, а одинарный - без?
  8. Господа! Никто адрес темы не подскажет - куда смотреть? Брали в СМП Одинарный SATA разъем для поверхностного монтажа SMD http://www.smd.ru/katalog/pravyj/raz/audio/sata/ Но не надёжно. Нужен такой же (можно вертикальный), но с защёлками (как стоят на матерях). Любой отзыв приветсвуется..
  9. Для непонятливых: для чего изначально предназначено это чудо?
  10. Вы попробуйте к-л простенький проект создать с использованием этих ног: сами же и увидите результат..
  11. спасибо, мил человек: нашёл я, где программа эти биты устанавливает..
  12. AT90USBXX тактируется от внешнего генератора на 8 МГц. Плата самодельная. Работаю с AT90USBXX посредством AVR JTAGICE mkII и IAR AVR. Захожу в режим работы с fusa-ми. CKDIV8 установлен. Ставлю галку напротив CKOUT Fuse (стоит ниже CKDIV8 в той же вкладке). Программирую fus-ы. Осциллографом вижу на выходе PORTC7 1 МГц, как и задумывалось. Выдёргиваю JTAGICE mkII из колодки на плате - на PORTC7 становится 8 МГц. Кто пояснить может?
×
×
  • Создать...