スイッチとボタンでBRAMに書き込んでみる
スイッチとボタンでブロックRAMへ書き込む練習。
仕様
BRAMの指定したアドレスのデータを表示
RAM上の指定したアドレス(sw15〜sw8)のデータはデータLED(LED7〜LED0)へ出力される
指定中のBRAMのアドレスを表示
指定中のアドレスはアドレスLED(LED15〜LED8)へ出力される
指定したデータを指定したアドレスへ書き込む
書き込み先のアドレス(sw15〜sw8)と書き込むデータ(sw7〜sw0)を指定して書き込みボタン(weボタン)を押すことで、ブロックRAMへデータを書き込むことができる
code:top.v
`timescale 1ns / 1ps
module top(
input clk,
input we,
);
assign led = {addr, dout};
my_block_ram ram (
clk,
we,
addr,
sw,
dout
);
endmodule
module my_block_ram (
input clk, we,
input logic 7:0 addr, din, );
always_ff @(posedge clk)
begin
if (we)
end
endmodule
code:top.xdc
# Clock signal
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} get_ports clk # Switches
set_property PACKAGE_PIN V17 [get_ports {sw0}] set_property IOSTANDARD LVCMOS33 [get_ports {sw0}] set_property PACKAGE_PIN V16 [get_ports {sw1}] set_property IOSTANDARD LVCMOS33 [get_ports {sw1}] set_property PACKAGE_PIN W16 [get_ports {sw2}] set_property IOSTANDARD LVCMOS33 [get_ports {sw2}] set_property PACKAGE_PIN W17 [get_ports {sw3}] set_property IOSTANDARD LVCMOS33 [get_ports {sw3}] set_property PACKAGE_PIN W15 [get_ports {sw4}] set_property IOSTANDARD LVCMOS33 [get_ports {sw4}] set_property PACKAGE_PIN V15 [get_ports {sw5}] set_property IOSTANDARD LVCMOS33 [get_ports {sw5}] set_property PACKAGE_PIN W14 [get_ports {sw6}] set_property IOSTANDARD LVCMOS33 [get_ports {sw6}] set_property PACKAGE_PIN W13 [get_ports {sw7}] set_property IOSTANDARD LVCMOS33 [get_ports {sw7}] set_property PACKAGE_PIN V2 [get_ports {sw8}] set_property IOSTANDARD LVCMOS33 [get_ports {sw8}] set_property PACKAGE_PIN T3 [get_ports {sw9}] set_property IOSTANDARD LVCMOS33 [get_ports {sw9}] set_property PACKAGE_PIN T2 [get_ports {sw10}] set_property IOSTANDARD LVCMOS33 [get_ports {sw10}] set_property PACKAGE_PIN R3 [get_ports {sw11}] set_property IOSTANDARD LVCMOS33 [get_ports {sw11}] set_property PACKAGE_PIN W2 [get_ports {sw12}] set_property IOSTANDARD LVCMOS33 [get_ports {sw12}] set_property PACKAGE_PIN U1 [get_ports {sw13}] set_property IOSTANDARD LVCMOS33 [get_ports {sw13}] set_property PACKAGE_PIN T1 [get_ports {sw14}] set_property IOSTANDARD LVCMOS33 [get_ports {sw14}] set_property PACKAGE_PIN R2 [get_ports {sw15}] set_property IOSTANDARD LVCMOS33 [get_ports {sw15}] # LEDs
set_property PACKAGE_PIN U16 [get_ports {led0}] set_property IOSTANDARD LVCMOS33 [get_ports {led0}] set_property PACKAGE_PIN E19 [get_ports {led1}] set_property IOSTANDARD LVCMOS33 [get_ports {led1}] set_property PACKAGE_PIN U19 [get_ports {led2}] set_property IOSTANDARD LVCMOS33 [get_ports {led2}] set_property PACKAGE_PIN V19 [get_ports {led3}] set_property IOSTANDARD LVCMOS33 [get_ports {led3}] set_property PACKAGE_PIN W18 [get_ports {led4}] set_property IOSTANDARD LVCMOS33 [get_ports {led4}] set_property PACKAGE_PIN U15 [get_ports {led5}] set_property IOSTANDARD LVCMOS33 [get_ports {led5}] set_property PACKAGE_PIN U14 [get_ports {led6}] set_property IOSTANDARD LVCMOS33 [get_ports {led6}] set_property PACKAGE_PIN V14 [get_ports {led7}] set_property IOSTANDARD LVCMOS33 [get_ports {led7}] set_property PACKAGE_PIN V13 [get_ports {led8}] set_property IOSTANDARD LVCMOS33 [get_ports {led8}] set_property PACKAGE_PIN V3 [get_ports {led9}] set_property IOSTANDARD LVCMOS33 [get_ports {led9}] set_property PACKAGE_PIN W3 [get_ports {led10}] set_property IOSTANDARD LVCMOS33 [get_ports {led10}] set_property PACKAGE_PIN U3 [get_ports {led11}] set_property IOSTANDARD LVCMOS33 [get_ports {led11}] set_property PACKAGE_PIN P3 [get_ports {led12}] set_property IOSTANDARD LVCMOS33 [get_ports {led12}] set_property PACKAGE_PIN N3 [get_ports {led13}] set_property IOSTANDARD LVCMOS33 [get_ports {led13}] set_property PACKAGE_PIN P1 [get_ports {led14}] set_property IOSTANDARD LVCMOS33 [get_ports {led14}] set_property PACKAGE_PIN L1 [get_ports {led15}] set_property IOSTANDARD LVCMOS33 [get_ports {led15}]